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;
   }

}

感谢您的时间。


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

IE7+

火狐 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; });

js小提琴

于 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 回答