次のJavascript正規表現があります:
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
この正規表現は期待どおりに機能せず、s
設定されません (s = null
常に) アイデアはありますか?
次のJavascript正規表現があります:
var regex = '/^' + name + '/';
var s ='';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null){
//do stuff
}
この正規表現は期待どおりに機能せず、s
設定されません (s = null
常に) アイデアはありますか?
var regex = new RegExp("^" + name);
たぶん、これで問題が解決します。
パターンは文字列連結によって動的に生成されるため、RegExp オブジェクトを作成する必要があります。
var regex = new RegExp('^' + name + ');
さまざまな正規表現の側面をテストできるように、 jsFiddleを作成しました。
問題は、 のフォーマットvar regex
が正しくないことです。/
esを削除します。
// Test code
var name = "foobar";
//var test = "foobar at the start of a sentence";
var test = "a sentence where foobar isn't at the start";
//var regex = '/^' + name + '/'; // Wrong format
var regex = '^' + name; // correct format
var s = '';
//s = this.innerHTML.toString().toLowerCase().match(regex);
s = test.toString().toLowerCase().match(regex);
if (s != null) {
//do stuff
alert("works");
}
正規表現を作成するには、次の 2 つの方法があります。
1) リテラル形式の使用
var re = /\w+/;
2) オブジェクト作成フォームの使用
var re = new RegExp("\\w+");
通常、リテラル形式が必要です。あなたの場合、文字列から作成している場合は、オブジェクト作成フォームを使用する必要があります。
var re = new RegExp("^" + name);
クエリ文字列を連結する場合は、RegExp オブジェクトを使用する必要があります。したがって、あなたの場合、/
クエリの一部です。
var regex = new RegExp('^' + name);
var s = '';
s = this.innerHTML.toString().toLowerCase().match(regex);
if (s != null) {
//do stuff
}
スラッシュを削除するだけで機能します。
pattern = function(name){"^"+name;}
(name + "whatever").match(pattern(name)); // not null
("whatEver..NotName").match(pattern(name)); // null