[VBA]Regex jak zapisać to wymaganie?

0

Mam do zapisania taki string:

1 znak --> litera duza lub mala - znaki alfanumeryczne
Kolejne 10 - Duze litery lub male, moga zawierac tez cyfry od 0-9 oraz znaki specjalne "-" oraz "_".
Na koncu Moze byc literka mala, duza bądź cyfry od 0-9.
Dlugosc max 12 znaków, min 1 znak, który musi być wielka badź mała literką z alfabetu.

Moje próby:

[A-Za-z][A-Za-z0-9-_]{0,10}[A-Za-z0-9]

Ale nie wiem jak zapisać min 1 znak i ze musi być: [A-Za-z]

Poproszę o pomoc,
Jacek

0

min 1 znak

[a-zA-Z]+

Dlugosc podwyrazenia: <<pattern>>{min,max}
Znak - musisz chyba wy'escape'owac jesli chcesz zeby bylo znakiem a nie czescia wyrazenia: \-

0
stivens napisał(a):

min 1 znak

[a-zA-Z]+

Dlugosc podwyrazenia: <<pattern>>{min,max}
Znak - musisz chyba wy'escape'owac jesli chcesz zeby bylo znakiem a nie czescia wyrazenia: -

Dziekuje bardzo,
sprawdzę!

0

Okej,

mam dalej z tym problem.

Mój string to:

fe12345678912

taki pattern mam:

[A-Za-z]+[A-Za-z0-9-_]{1,10}[A-Za-z0-9]

a wynik jest:
fe12345678912

link:
https://regex101.com/

jak zabiore + to jest ok ale brakuje warunku na min 1 znak.
(Wynik z [A-Za-z][A-Za-z0-9-_]{1,10}[A-Za-z0-9] = fe1234567891)
Proszę o pomoc

0

([a-zA-Z][a-zA-Z0-9\-\_]{0,10}[a-zA-Z0-9]){1,12}

https://regexr.com/

0

Okej,

w VBA niestety dalej zwraca TRUE zamiast FALSE:

Sub test()

Dim regex As Object, str As String
Set regex = CreateObject("VBScript.RegExp")

With regex
  .Pattern = "([a-zA-Z][a-zA-Z0-9\-\_]{0,10}[a-zA-Z0-9]?){1,12}"
End With
    
str = "fe12345678912"
Debug.Print regex.test(str)

End Sub

co robie źle?

1

Ale co to robi w VBA? Sprawdza czy taki podstring znajduje sie w stringu czy ze string spelnia pattern?

1
^[A-Za-z][-A-Z0-9_a-z]{10}[A-Z0-9a-z]$

Jeżeli to nie pasuje, pokaż testowe stringi – co ma wejść i co ma nie wejść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1