2017-06-30 3 views

Antwort

4

Sie verwenden können

/^[a-z]\d.*/i 

Siehe die regex demo. Wenn die Zeichenfolge Zeilenumbrüche enthalten kann, ersetzen Sie .* durch [\s\S]*.

Einzelheiten

  • ^ - Beginn der Zeichenfolge
  • [a-z] - ein ASCII-Buchstaben
  • \d - eine Ziffer
  • .* - alle 0+ Zeichen außer Zeilenumbruch Zeichen ([\s\S] wird mit allen Zeichen übereinstimmen).

HINWEIS: Die .* (oder [\s\S]*) am Ende ist nur eine gute Idee, wenn Sie die Übereinstimmungswerte verwenden müssen. Wenn nicht, können Sie bei Verwendung mit RegExp#test() diesen Teil des Musters auslassen.

+0

Can not '[a-zA-Z]' sein nur '[a-z]', da Sie die 'I' Flagge verwenden? –

+0

@ JeremyThille: Getestet ohne '/ i' zuerst. –

+0

@ WiktorStribiżew Danke, das hat mich in die richtige Richtung gebracht. Ich habe es ein wenig verbessert, um in einem Kontext zu arbeiten, der hier nicht erwähnt wird, und es funktioniert so, wie ich es will, außer dass ich mehr als eine Ziffer eingeben muss, damit es funktioniert ... "/^[a-zA-Z] \ d \ S \. */i' Es braucht 'm10', aber nicht' m1' Ideen? – SeaBass

2

Sie könnten nur die ersten zwei Zeichen testen.

var cases = ['m1', 'm1a', 'M100bc', 's45', 'S396xyz', '', 'm', '1', '1a', 'mm', 'Mx', 'mm1', 'SS1']; 
 
console.log(cases.map(s => (/^[a-z]\d/i.test(s))));

Verwandte Themen