1

JavaScript で文字列にパターンが含まれているかどうかを検出する方法:

1. input="[Lorem]foo";
2. input="[ ]";
3. input="[ipsum]foo";
4. input="[dolor]foo1";
5. input="[sit  ]foo2";
6. input="[ amet]foo3";
7. input="amet]foo3";
...

スクリプトはinput次のように処理する必要があります。

1. string1='Lorem'; string2="foo";
2. do nothing;
3. string1='ipsum'; string2="foo";
4. string1='dolor'; string2="foo1";
5. do nothing;
6. do nothing;
7. do nothing;
...

これはスクリプトの一部になります...

input  = "[asd]qwe";
input2 = "qwe";

processit(input);
processit(input2);

function processit(e){

   if(..???..){
      alert(string1);
      alert(string2);
   }
   else {
      return false;
   }

}

お時間をいただきありがとうございます。


EDIT:ソリューションはクロスブラウザでなければなりません

IE7 +

Firefox 3.6+

クロム 7+ ...

4

3 に答える 3

4

jsbin コード

この正規表現は結果を達成するはずです:/\[([a-zA-Z0-9]+)\]([a-zA-Z0-9]+)/

于 2012-05-01T05:53:05.007 に答える
1

split()キャプチャ グループでどのように機能するかを利用できます。

var pieces = str.split(/\[(\w+?)\]/);

空の文字列値が得られる場合があります。それらを削除するには...

pieces.filter(function(piece) { return piece; });

jsFiddle .

于 2012-04-08T02:37:05.827 に答える
0

あなたの実際の要件は不明なので、私は推測しています。次の例では、空でない英数字とアンダースコアのみの文字列のみを角かっこの内側と後に許可し、長い文字列で複数回出現するのではなく、文字列全体と一致させようとします。

var input = "[Lorem]foo";
var string1, string2;
var result = /^\[(\w+)\](\w+)$/i.exec(input);
if (result) {
    string1 = result[1];
    string2 = result[2];
}
alert(string1 + ", " + string2);
于 2012-05-01T11:01:28.013 に答える