2016-04-12 14 views
0

以下は私のコード..です正規表現で星印 "*"を検出する方法は?

/(?!\*)/.test("test*test") 

結果はまだtrueを返します。

文字列に*があればfalseを返す文字列を検証したいと思います。

コードに何か問題がありますか?

+0

を否定あなたは '/ \ * /' –

+0

あなたは出力を否定することができますし、 'test'結果を否定することができます:'(/ \! * /。test(str)) ' – zhirzh

答えて

4

あなたの正規表現は開始位置に一致するため真を返します。あなたはちょうど "*の後ろにない位置がありますか?"どんな文字列でも一致します。"*"も一致します。*の後には、(注釈)*の後には位置がないためです。

あなたは文字列が*が含まれていないかどうかをテストしたい場合は、最も簡単な解決策がある:正規表現でそうするようなものになるだろう

"test*test".indexOf("*") < 0 // true if no * in string 

/^[^*]*$/.test("test*test") 

しかし、それはより多くの仕事です。

+0

ありがとうございました。私の頭脳は、正規表現について考えてインデックスを完全に忘れることでした... XD – Dreams

+1

ある時点で私たち全員に起こります。強力なツールですが、手元にあるタスクにとっては強力すぎることもあります。 jQueryのようなもの。 –

-1

*の存在のためだけのテストおよび出力に

var string="123*456"; 
console.log( !(/\*/.test(string)) ); 
false 

var string="12*34*56"; 
console.log( !(/\*/.test(string)) ); 
false 

var string="123456"; 
console.log( !(/\*/.test(string)) ); 
true 
関連する問題