如何检测字符串是否包含带有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+ ...
答案 0 :(得分:4)
这个正则表达式应该达到结果:/\[([a-zA-Z0-9]+)\]([a-zA-Z0-9]+)/
答案 1 :(得分:1)
您可以利用split()
如何处理捕获群组。
var pieces = str.split(/\[(\w+?)\]/);
您可能会获得一些空字符串值。你可以用......删除它们。
pieces.filter(function(piece) { return piece; });
答案 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);