我的串具有[1212,1212],[1212,11212],...
什么是确切的正则表达式匹配正确的字符串?
我想提取每个值转换成例如一个数组我愿意1212,1212
作为一对并评估一系列步骤。
尝试/[[0-9],[0-9]]/
但它没有按照我的意愿去做任务。基本上我是Regex的noob,有人可以帮忙。
在此先感谢
我的串具有[1212,1212],[1212,11212],...
什么是确切的正则表达式匹配正确的字符串?
我想提取每个值转换成例如一个数组我愿意1212,1212
作为一对并评估一系列步骤。
尝试/[[0-9],[0-9]]/
但它没有按照我的意愿去做任务。基本上我是Regex的noob,有人可以帮忙。
在此先感谢
好像你只需要之前和逗号之后的匹配一个或多个数字,所以你可以做到以下几点:
"[1212,1212],[1212,11212]".match(/\d+,\d+/g)
,这将给你的数组:["1212,1212", "1212,11212"]
要提取的对:
var result = "[1212,1212],[1212,11212]".match(/\d+,\d+/g);
for (var i = 0; i < result.length; i++) {
var pair = result[i].match(/\d+/g),
left = pair[0], right = pair[1];
alert("left: " + left + ", right: " + right);
}
您需要转义想要匹配的字面括号。您也可以使用\d
来匹配“任何数字”,这使得它更整洁。而且,你只能匹配一个数字。您需要匹配“一个或多个”(+
量词)
/\[\d+,\d+\]/g
这g
修改查找字符串中的所有比赛,否则只有第一个被发现。
你需要为你的正则表达式一些修改才能正常工作:
/\[[0-9]+,[0-9]+\]/g
[
,因为他们有特殊的意义。[0-9]
只匹配一个数字,你需要+
量词匹配一个或多个数字,因此[0-9]+
。g
来提取所有匹配项。然后你就可以提取所有的值到一个这样的数组:
var input = "[1212,1212],[1212,11212]";
var pattern = /\[[0-9]+,[0-9]+\]/g;
var result = [];
var currentMatch;
while((currentMatch = pattern.exec(input)) != null) {
result.push(currentMatch.toString());
}
result;
或者,如果你不需要先后找到一个匹配的时间,那么你可以使用String.match()
为@马修·麦克维那样:
var input = "[1212,1212],[1212,11212]";
var result = input.match(/\[[0-9]+,[0-9]+\]/g);
只是想知道:没有任何理由只是让你自己做同样的编辑我的编辑被拒绝?此外,我还修复了一个错字... –
@IngoBürk对不起,但我不是那个拒绝/批准你的编辑,当我试图看到它告诉我,它已经处理,当我刷新页面它已经消失了。无论如何,如果错字仍然存在,你可以自由修复它。谢谢。 –
SO的神秘方式。无论如何,谢谢你的回答。 –
嗅探器和马修你的代码工作。并感谢它,但我选择这个作为最好的答案,因为它给了我一个额外的步骤,我想钻到左边,右边的组合,这是我因为懒惰而不应该做的。 谢谢大家:) –
现在我有另一个查询。正则表达式是否支持Android本机浏览器?基于从正则表达式匹配中获得的匹配注入DOM元素的脚本的一部分似乎不适用于我的手机上的Android或Dolphin浏览器。 –
它应该支持正则表达式,如果它支持JavaScript,可能会有一个不支持的dom调用。可能值得打开另一个问题来解决这个 –