正则表达式/javascript 用于匹配括号中的值
Regex/Javascript for Matching Values in Parenthesis
我的 Web 应用程序需要解析用括号括起来的字符串中的数字范围。我从来没有真正正确理解正则表达式,所以我需要一些帮助。下面的代码是我想做的(然后我将拆分连字符上的字符串并获取最小/最大值)。显然模式是错误的 - 下面的示例提醒"(10-12) foo (5-10) bar",当我想要的结果是 1 个警报说 (10-12) 和下一个说法 (5-10),或者更好的是那些没有括号的值如果可能的话。
任何帮助将不胜感激。
var string = "foo bar (10-12) foo (5-10) bar";
var pattern = /'(.+')/gi;
matches = string.match(pattern);
for (var i in matches) {
alert(matches[i]);
}
通过在+
后添加一个?
来使您的量词变得懒惰。否则,它会贪婪地消耗尽可能多的东西,从你的开场(
到字符串中的最后一个)
。
var string = "foo bar (10-12) foo (5-10) bar",
pattern = /'(.+?')/g,
matches = string.match(pattern);
jsFiddle。
如果您不想在匹配项中包含括号,通常您会使用正面前瞻和后视括号。JavaScript 不支持 lookbehinds(尽管你可以伪造它们)。所以,使用...
var string = "foo bar (10-12) foo (5-10) bar",
pattern = /'((.+?)')/g,
match,
matches = [];
while (match = pattern.exec(string)) {
matches.push(match[1]);
}
jsFiddle。
也。。。
- 你不需要正则表达式中的
i
标志;你不匹配任何字母。 - 您应该始终使用
var
来限定变量的范围。在您的示例中,matches
将是全局的。 - 不应使用
for (in)
遍历数组。您还应该检查match()
是否不返回null
(如果未找到结果)。
问题是你的正则表达式是贪婪的,这意味着它将匹配第一个括号并继续前进,直到找到最后一个括号。要解决此问题,您有两个选择,您可以在+
后添加?
符号以使其不贪婪:'(.+?')
或者,匹配除右括号以外的任何字符:'([^)]+')
。
这两个正则表达式都应该满足您的需求。
相关文章:
- Javascript-用于展开数组的递归/for循环
- JavaScript:用于检索属性值的括号表示法
- 是javascript(用于节点)中用于忽略文件的任何微小库
- javascript用于带有html5的自动图像滑块
- JAVASCRIPT-用于变量“;i〃;未定义
- 我的Javascript(用于在ul中重新排序li)在IE中不起作用
- JavaScript 用于查找地点数量的纬度和经度
- Javascript:用于 vs jQuery.each() 与时间延迟
- Javascript用于圆角图像,在Chrome上不起作用
- JavaScript 用于在某些事件发生后执行函数
- JavaScript:用于播放WAV的自定义形状按钮
- JavaScript 用于当用户向下滚动屏幕时弹出的建议框
- JavaScript - 用于 x 轴和 y 轴上的循环
- JavaScript:用于查找链表节点的递归函数返回错误的节点
- 有没有通过 Evernote API 将 JavaScript 用于附件的具体示例
- 正则表达式 javascript 用于检查逗号分隔的数字
- 正则表达式/javascript 用于匹配括号中的值
- JavaScript:用于流媒体的简单 SoundCloud API 示例无法在 Safari 中正常工作
- Javascript 用于将名称值对分配给对象的简写
- Javascript 用于计算带有单选复选框和下拉项的提交表单