ASP Classic: Проверьте, состоит ли строка только из допустимых символов - PullRequest
8 голосов
/ 25 октября 2011

Я проверял весь интернет, но действительно не могу найти какое-то конкретное решение моей проблемы.

Как проверить, состоит ли строка только из объявленных допустимых символов?

Я хочу, чтобы моя строка состояла только из 0-9, A-Z и a-z

Поэтому строка oifrmf9RWGEWRG3oi4m3ofm3mklwef-qæw должна быть недопустимой из-за - и æ в то время как строка joidsamfoiWRGWRGmoi34m3f должна быть действительной.

Я использовал встроенный RegExp для удаления строк, но можно ли просто сделать так, чтобы он проверял и возвращал логическое значение false или true?

мое регулярное выражение:

set pw = new regexp
pw.global = true
pw.pattern = "[^a-zA-Z0-9]"

newstring = pw.replace("iownfiwefnoi3w4mtl3.-34ø'3", "")

Спасибо:)

Ответы [ 5 ]

9 голосов
/ 25 октября 2011

Вы можете сделать тест , который возвращает True или False

If( pw.Test("string") ) Then
'' Do something
End If
2 голосов
/ 25 октября 2011

Попробуйте -

Dim myRegExp, FoundMatch
Set myRegExp = New RegExp
myRegExp.Pattern = "[^a-zA-Z0-9]"
FoundMatch = myRegExp.Test("iownfiwefnoi3w4mtl3.-34ø'3")

Если FoundMatch истинно, механизм RegEx обнаружил символ, который не является az, AZ или 0-9, и ваша строка недопустима.

0 голосов
/ 25 октября 2011

[a-zA-Z0-9] работает ... Я попробовал это против вашей строки здесь http://gskinner.com/RegExr/?2u7c3, а здесь http://regexpal.com/ ... вытащите морковь. Я также не могу вспомнить, как vbscript использует движок regex, но это может иметь отношение к вашей проблеме. Это тоже работает ...

\ D? \ Ш

0 голосов
/ 25 октября 2011

Вместо замены вы можете посмотреть, есть ли совпадения на каких-либо символах за пределами белого списка.Общий синтаксис для каждого совпадения: здесь

0 голосов
/ 25 октября 2011

Вы можете сделать что-то вроде:

Set match = pw.execute("iownfiwefnoi3w4mtl3.-34ø'3")

if match.count > 0 then
   ' your pattern matched, so it's invalid
   badString = true
else
   badString = false
end if
...