2016-07-07 21 views
1

とbegeningない、JavaScriptの正規表現のテスト、私は言葉に特定の単語で始まらない文字列をテストしようとしている属性

var content = 'special-src="http://www.link.com" '; 
var src = new RegExp(/\b(?!special-)\w*src=*\b/g); 
console.log(src.test(content)); 

これは偽を慰める必要がありますが、そうではありません。

しかし、正規表現とコンテンツから - を削除すると、結果は正常ですので、これはエスケープな問題ですね。

+2

は、なぜあなたは 'はGlobal'フラグを使用していますか?文字列自体ではなく文字列内のすべての単語をテストする必要がありますか? – VisioN

+0

@VisioNはいすべての単語をテストする必要があります。 – adrien334

+0

私はそれを明確にするために質問の例を追加することをお勧めします – anubhava

答えて

0

で試してみてください:表現に誤りがありました

var content = 'special-src="http://www.link.com" '; 
var src = /^(?!special\-)\w*src=.*$/g; 
console.log(src.test(content)); 

UPDATE

する必要がありますか!?代わりに?!。正しいコードは、あなたが探しているもの

var content = 'special-src="http://www.link.com" '; 
var src = /^(!?special\-)\w*src=.*$/g; 
console.log(src.test(content)); 
+0

があります。srcの前にスペースがある場合はそれは真実を返すことはありません – adrien334

+0

文字列の境界 '^'と '$'はトリックではありません – Brad

1

である負の後読み(?<!special-)、ない負の先読み(?!special-)です。 Regex Workbenchで動作していますが、Javascriptはこれをネイティブにサポートしていません。それがうまくいくかもしれないよう

このアプローチはなりますhttp://davidchin.me/blog/simulate-regex-lookbehind-in-javascript/

関連する問題