检测字符串是否包含模式

时间:2012-04-08 02:28:41

标签: javascript regex string replace

如何检测字符串是否包含带有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;
   }

}

感谢您的时间。


编辑: 解决方案必须是跨浏览器

IE7 +

Firefox 3.6 +

Chrome 7+ ...

3 个答案:

答案 0 :(得分:4)

jsbin code

这个正则表达式应该达到结果:/\[([a-zA-Z0-9]+)\]([a-zA-Z0-9]+)/

答案 1 :(得分:1)

您可以利用split()如何处理捕获群组。

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

您可能会获得一些空字符串值。你可以用......删除它们。

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

jsFiddle

答案 2 :(得分: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);