#regex #vbscript
#регулярное выражение #vbscript — скрипт
Вопрос:
Мне нужно удалить некоторые символы emoji из строки с помощью классического скрипта asp и vb. Вот что у меня есть:
👪 Повтор / Другое
📅 По расписанию
💲 Ведущий
И что мне нужно:
Повторение / Другое
Запланированный
Ведущий
Я смог удалить смайлики с помощью этой функции, но я хочу сохранить специальные символы, такие как косая черта /, пробелы, amp;, : и т.д.
Любая помощь приветствуется.
Function strClean (strtoclean)
Dim objRegExp, outputStr
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
objRegExp.Pattern = "((?![a-zA-Z0-9]).) "
outputStr = objRegExp.Replace(strtoclean, "-")
objRegExp.Pattern = "- "
outputStr = objRegExp.Replace(outputStr, "")
strClean = outputStr
End Function
Комментарии:
1. Попробуйте удалить все не-ASCII,
objRegExp.Pattern = "[^ -~]"
2. Большое вам спасибо, очень признателен. Этот шаблон работает для сохранения всех буквенно-цифровых символов, objRegExp.Pattern = «((?![a-zA-Z0-9]).) » но он не удаляет смайлики. Понадобятся ли мне две функции / шаблоны, чтобы избавиться от смайликов?
3. Не
objRegExp.Pattern = "[^ -~] "
возвращает правильный результат для вас? Попробуйте такжеobjRegExp.Pattern = "(?:(?![ -~])[sS]) "
Ответ №1:
Ваше текущее регулярное выражение соответствует любому символу, кроме разрыва строки и алфавитно-цифровых символов ASCII. Он не соответствует смайликам, потому что движок регулярных выражений на основе VBScript ECMA-262 3rd edition не может сопоставлять символы астрального плана с простым .
шаблоном.
Если вы хотите просто добавить поддержку сопоставления смайликов к вашему текущему шаблону, вы можете заменить шаблон .
на (?:[-tx0Bfx0E-u2027u202A-uD7FFuE000-uFFFF]|[uD800-uDBFF][uDC00-uDFFF]|[uD800-uDBFF](?![uDC00-uDFFF])|(?:[^uD800-uDBFF]|^)[uDC00-uDFFF])
шаблон и использовать
objRegExp.Pattern = "(?:(?![a-zA-Z0-9])(?:[-tx0Bfx0E-u2027u202A-uD7FFuE000-uFFFF]|[uD800-uDBFF][uDC00-uDFFF]|[uD800-uDBFF](?![uDC00-uDFFF])|(?:[^uD800-uDBFF]|^)[uDC00-uDFFF])) "
Смотрите демонстрацию регулярных выражений
Если вы просто хотите удалить все символы, кроме ASCII, вы можете использовать
objRegExp.Pattern = "objRegExp.Pattern = "(?:(?![ -~])[sS]) "
Шаблон соответствует любому одному или нескольким
символам () [sS]
(соответствует любым символам с пробелами и без пробелов), которые не равны печатным символам ASCII.
Комментарии:
1. Движок регулярных выражений VBScript в последний раз был выпущен в IE 5.5, в котором реализована нестандартная реализация JavaScript JScript на основе ECMAScript версии 3, а не 5.
2. @Lankymart Интересно, у вас есть какая-нибудь ссылка, где это задокументировано?
3. Это немного сложно, но поддержка регулярных выражений VBScript объясняет, как последняя реализация была в IE 5.5, и вы можете отслеживать управление версиями JScript оттуда через Википедию . ECMAScript версии 5 не использовался до тех пор, пока Chakra (движок JScript) не был реализован для IE9 и вызывал JavaScript, но за счет любой совместимости с активными сценариями. Из-за этого он стоял бок о бок с классической реализацией JScript, которая все еще использует ECMAScript версии 3.