[VBA]Regex jak zapisać to wymaganie?

[VBA]Regex jak zapisać to wymaganie?

Wątek przeniesiony 2024-06-25 14:31 z Inne języki programowania przez cerrato.

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
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

stivens
  • Rejestracja: dni
  • Ostatnio: dni
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: \-

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
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ę!

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
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

stivens
  • Rejestracja: dni
  • Ostatnio: dni
0

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

https://regexr.com/

JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 127
0

Okej,

w VBA niestety dalej zwraca TRUE zamiast FALSE:

Kopiuj
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?

stivens
  • Rejestracja: dni
  • Ostatnio: dni
1

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

  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
^[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ść.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.