Использование RegEx в vb6 - PullRequest
4 голосов
/ 19 июля 2011

Мне нужно проверить строку, которая может содержать как буквенно-цифровые, так и специальные символы, где мне нужно передать ту, которая имеет только альфа-символы (никакие числа или любые другие специальные символы не допускаются)

В текущем методе я использую числа ASCII для оценки каждого символа, если его альфа или нет. Есть ли другой эффективный способ обнаружить наличие специальных символов или чисел в строке? Например, мы не можем использовать Как или что-то, чтобы проверить один раз, чем идущий символ за символом?

For y = 2 To Len(sString)
    If Not ((Asc(Mid$((sString,y,1))>64 AND Asc(Mid$((sString,y,1))<91) OR _
    (Asc(Mid$((sString,y,1))>96 AND Asc(Mid$((sString,y,1))<123)) Then
        //Display an error msg
        Exit For
    End If
Next y

Ответы [ 3 ]

8 голосов
/ 19 июля 2011

VBA имеет собственный оператор Like: его синтаксис нестандартный, например, многосимвольный символ подстановки * и оператор NOT !:

If sString Like "*[!A-Za-z]*" Then
  ' Display an error msg
End If
8 голосов
/ 19 июля 2011

Вы можете использовать регулярные выражения в VB6.Вы должны добавить ссылку на библиотеку «Microsoft VBScript Regular Expressions 5.5» в ваш проект.Затем вы можете использовать следующее:

Dim rex As RegExp
Set rex = New RegExp
rex.Pattern = "[^a-zA-Z]"
If rex.Test(s) Then
    ' Display error message
End If

Когда я первоначально ответил на этот вопрос, он был помечен как VB.NET;для дальнейшего использования мой оригинальный ответ на основе .Net сохраняется ниже

Как вы и думали, это можно сделать с помощью регулярных выражений (не забудьте Imports System.Text.RegularExpressions:

If Regex.IsMatch(s, "[^a-zA-Z]") Then
    ' Display error msg
End If

Кроме того, исходный код читается как код VB6, а не VB.NET.Вот гораздо более удобный способ написания исходного кода без регулярных выражений:

For Each ch As Char In someString
    If Not (ch >= "a"c AndAlso ch <= "z"c OrElse ch >= "A"c AndAlso ch <= "Z"c) Then
        ' Display error msg
        Exit For
    End If
Next
3 голосов
/ 19 июля 2011

Вам нужно будет добавить ссылку на Microsoft VBScript Regular Expressions 5.5

Код для проверки не-буквенных символов:

'Prepare a regular expression object
Dim myRegExp As RegExp
Dim myMatches As MatchCollection
Dim myMatch As Match
Dim matchesFound As Boolean

Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Global = True
myRegExp.Pattern = "[^A-Za-z]+"
Set myMatches = myRegExp.Execute("abc123def#$%")
matchesFound = myMatches.Count > 0

Проверить Как использовать регулярные выражения вMicrosoft Visual Basic 6.0 в службе поддержки Microsoft для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...