2013-02-20 6 views
13

Ich muss überprüfen, ob ein Wort mit einem bestimmten Teilstring beginnt, wobei die Groß- und Kleinschreibung ignoriert wird. Ich habe diese Überprüfung mit dem folgenden Regex-Suchmuster durchgeführt, aber das hilft nicht, wenn es einen Unterschied zwischen den Strings gibt.Regex, um zu prüfen, ob die Zeichenfolge beginnt, und die Groß-/Kleinschreibung ignoriert

mein Fall sensible Art und Weise:

var searchPattern = new RegExp('^' + query); 
if (searchPattern.test(stringToCheck)) {} 

Antwort

34

Geben Sie den i Modifikator als zweites Argument:

new RegExp('^' + query, 'i'); 

Werfen Sie einen Blick auf the documentation für weitere Informationen.

+1

Danke für die schnelle Antwort! Wird akzeptieren, sobald SO es erlaubt! –

2

In diesem page können Sie sehen, dass Modifikatoren als zweiter Parameter hinzugefügt werden können. In Ihrem Fall sind Sie suchen 'i' (Canse unempfindlich)

//Syntax 
var patt=new RegExp(pattern,modifiers); 

//or more simply: 

var patt=/pattern/modifiers; 
+1

Ich empfehle nicht w3schools.com. Siehe http://w3fools.com warum. –

+0

@MarcelKorpel fertig .. Ich wechselte gerade mit anderen sah ich in Google. Vielen Dank! – SERPRO

13

Sie brauchen nicht einen regulären Ausdruck überhaupt, vergleichen nur die Saiten:

if (stringToCheck.substr(0, query.length).toUpperCase() == query.toUpperCase()) 

Demo: http://jsfiddle.net/Guffa/AMD7V/

Dies behandelt auch Fälle, in denen Sie Zeichen entkommen müssen, um die RegExp-Lösung arbeiten zu lassen, zum Beispiel wenn query="4*5?", die sonst immer alles zusammenpassen würde.

+0

ist diese Methode leistungsfähiger als Regex-Suche? –

+3

@ user01: Ja, ich habe dies in den drei Browsern getestet, die ich installiert habe, und es ist schneller in allen: http://jsperf.com/regex-vs-compare – Guffa

+1

+1 & thanks. Ich würde mit dieser Lösung gehen, aber wie für die Frage über die Regex sollte ich die Antwort entsprechend akzeptieren. –

2

Ich denke, alle vorherigen Antworten sind korrekt hier ist ein anderes Beispiel ähnlich wie SERPRO, aber der Unterschied ist, dass es keinen neuen Konstruktor gibt: Hinweis: ich ignoriere Groß- und Kleinschreibung und^bedeutet Start mit.

var whatEverString = "My test String"; 
var pattern = /^my/i 
var result = pattern.test(whatEverString); 
if (result === true) { 
    console.log(pattern, "pattern did match !"); 
} else { 
    console.log(pattern, " pattern did NOT match"); 

} 

Hier ist die jsfiddle, wenn Sie es einen Versuch geben möchten.

enter image description here

Verwandte Themen