/ / Javascript regex per l'estrazione di una parte della stringa: javascript, regex, stringa, sostituisci

Regex Javascript per l'estrazione di alcune parti di stringhe - javascript, regex, string, replace

Devo estrarre una parte specifica della stringa Javascript. Stavo pensando di farlo con regex, ma non riuscivo a trovarne uno che lo facesse correttamente.

La stringa può avere una lunghezza variabile e può contenere tutti i caratteri possibili in tutte le combinazioni possibili.

Quello che devo estrarre da esso, sono 10 caratteri adiacenti, che corrispondono a una delle prossime due possibili combinazioni:

  1. 9 numeri e 1 lettera "X" (lettera maiuscola "X", non X come lettera variabile!)
  2. 10 numeri

Quindi, se la stringa di input è questa: "[1X,!? X22; 87654321X9] ddee", dovrebbe restituire solo "87654321X9".

Spero di averlo spiegato abbastanza bene. Grazie in anticipo!

risposte:

3 per risposta № 1

Questo Regex funzionerà:

d{9}X|d{8}Xd|d{7}Xd{2}|d{6}Xd{3}|d{5}Xd{4}|d{4}Xd{5}|d{3}Xd{6}|d{2}Xd{7}|d{1}Xd{8}|d{10}|Xd{9}

Come descritto, deve corrispondere a 9 cifre e qualsiasi lettera e la lettera può trovarsi in qualsiasi posizione della sequenza.

d{9}X # will match 9 digits and a letter in the end
d{8}Xd # will match 8 digits a lettter then a digit again
...
d{1}Xd{8} # will match 1 digits a lettter then 8 digits
{10} # will match 10 digits

Modificato per abbinare solo X


2 per risposta № 2

Puoi usare questa regex molto più semplice:

/(?!d*Xd*X)[dX]{10}/

Distacco RegEx:

(?!d*Xd*X)  # negative lookahead to fail the match if there are 2 X ahead
[dX]{10}     # match a digit or X 10 times

Da più di uno X non è consentito a causa dell'utilizzo di lookahead negativo, questa regex consentirà solo 10 cifre o ekse 9 cifre e una singola X.

Demo RegEx

Questa regex presenta alcuni vantaggi rispetto all'altra risposta:

  • Regex molto più semplice che è più facile da leggere e mantenere
  • Prende meno di mezzo passo per completare, il che può essere una differenza sostanziale su un testo più grande.