2

LIKE 演算子と同等の結果を得るために、JavaScript で文字列一致を使用する必要があるとします。

WHERE "str1" LIKE '%str2%';

以下の一致式が機能します。

var str1="abcd/pqrst"; 
var str2 =  "pqr";

if(str1.match(/^.*pqr.*/)){ //do something};

しかし、pqr の代わりに以下のステートメントのような変数を渡す必要があります。助けてください。

//Wrong
var re = new RegExp("/^.*"+ str2 + ".*/"); 
if(str1.match(re){ //do something}
4

3 に答える 3

6

これはあなたが試すための簡単なjsFiddleです

http://jsfiddle.net/jaschahal/kStTc/

var re = new RegExp("^.*"+str2+".*","gi"); 
// second param take flags

詳細はこちら

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

これらの単純なチェックには、contains()/indexOf() 関数も使用できます。

于 2012-10-15T05:48:36.073 に答える
4

まず、 を使用するのが適切かもしれませんRegExp.test。次に、リテラル文字 ('/')RegExpを使用しないオブジェクトを作成します。RegExp

したがって、コードは次のようになります。

var str1 = 'abcd/pqrst'
   ,str2 = 'pqr'
   ,re = RegExp('^'+str2+'.*');

if (re.test(str1)) { /* do things */}

第三に、RegExp( /^pqr.*/) は をテストfalsestr1ます。に相当するものは、(修飾子に注意してください(大文字と小文字を区別しないテスト))、または単に(@ Jeff Bowmansの回答を参照)のWHERE "str1" LIKE '%str2%';ように単純です。RegExp(str2,'i').test(str1)i~str.indexOf(str2)

于 2012-10-15T05:44:42.783 に答える
2

文字列が別の文字列の途中にあることを確認するだけでよい場合は、 を使用しますstr1.indexOf(str2) >= 0。他の言語では、これは と同等ですがstr1.contains(str2)、Javascript 文字列にはcontainsメソッドがありません。

正規表現の途中に str2 を置きたい場合は、必ずエスケープしてください。

于 2012-10-15T05:43:51.377 に答える