2017-01-26 2 views
4

Gibt es eine einfache Möglichkeit zu überprüfen, ob das erste und das letzte Zeichen einer Zeichenfolge identisch sind oder nicht, nur mit Regex?Javascript Regex, um zu überprüfen, ob das erste und letzte Zeichen ähnlich sind?

Ich weiß, dass Sie mit charAt überprüfen

var firstChar = str.charAt(0); 
var lastChar = str.charAt(length-1); 
console.log(firstChar===lastChar): 

Ich bin nicht dafür zu fragen: Regular Expression to match first and last character

+0

Warum möchten Sie reguläre Ausdrücke für etwas verwenden, das ohne Regex so einfach ist? –

+0

@DavidThomas, das ist nicht die einzige Regel, die ich überprüfe, ich überprüfe viele von anderen und ich frage mich, ob ich sie alle in einer Regex machen kann. – Milad

Antwort

8

Sie können Regex verwenden, um mit capturing group und seine backreference beide Start- und Endezeichen gleiche zu behaupten sind durch Erfassen des ersten Caharakters. Um die Regex-Übereinstimmung zu testen, verwenden Sie die Methode RegExp#test.

var regex = /^(.).*\1$/; 
 

 
console.log(
 
    regex.test('abcdsa') 
 
) 
 
console.log(
 
    regex.test('abcdsaasaw') 
 
)

Regex explanation here :

  1. ^ behauptet Position am Anfang des Strings
  2. 1. Capturing Gruppe (.)
  3. .* jedes Zeichen (außer Newline) - zwischen null und unlimi ted mal, so oft wie möglich, je nach Bedarf etwas zurückzugeben (gierig)
  4. \1 entspricht den gleichen Text wie zuletzt durch die erste abgestimmte Erfassungsgruppe
  5. $ behauptet Position am Ende des Strings

Die . enthält keine Newline-Zeichen, um Newline-Update der Regex enthalten.

var regex = /^([\s\S])[\s\S]*\1$/; 
 

 
console.log(
 
    regex.test(`abcd 
 

 
sa`) 
 
) 
 
console.log(
 
    regex.test(`ab 
 
c 
 
dsaasaw`) 
 
)

Siehe: How to use JavaScript regex over multiple lines?

Regex explanation here :

  1. [.....] - paßt ein einzelnes Zeichen vorhanden
  2. \s - entspricht ein beliebiges Leerzeichen (gleich [\r\n\t\f\v ])
  3. \S - Für jedes Nicht-Leerzeichen (gleich [^\r\n\t\f ])

schließlich [\s\S] ist jedes Zeichen.

+0

@Pranav, können Sie bitte erklären, warum es funktioniert? , welcher Teil macht die Kontrolle? – Milad

+0

@Milad: Die Testmethode auf Musterübereinstimmung überprüfen –

+0

Das Muster, das mit einem beliebigen Zeichen "[\ s \ S]" übereinstimmt, entspricht "[^]'. –

Verwandte Themen