Javascript RegExp - 它包括空格和括号

时间:2016-04-14 22:29:18

标签: javascript regex

reob的一个菜鸟

请查看my attempt

我想隔离除括号之外没有连字符或其他字符的数字 - 然后在这些数字周围加上引号

到目前为止,我有 - [^a-z-0-9](\d+)[^0-9-a-z]

匹配数字组 - 不以数字或字符开头或结尾

目前正在匹配(1,2)而不是说1和2

测试

(0-hyphen-number) OR
(123 no hyphen) OR
(no hyphen 2) OR
(no 3 hyphen) OR
(no -4- hyphen) OR
(no -5 hyphen) OR
(no 6- hyphen) OR
(blah 0987 hyp1hen) OR
(blah -4321 hyp-2hen) OR
(blah -1234- hyp3-hen)

预期输出:)

(0-hyphen-number) OR
("123" no hyphen) OR
(no hyphen "2") OR
(no "3" hyphen) OR
(no -4- hycphen) OR
(no -5 hyphden) OR
(no 6- hyphen) OR
(blah "0987" hyp1hen) OR
(blah -4321 hyp-2hen) OR
(blah -1234- hyp3-hen)

3 个答案:

答案 0 :(得分:1)

你的正则表达足够接近。但是,您应该将-放在结尾或开头或字符类中。

您应该捕获所有组并按如下方式替换它们。

正则表达式: ([^a-z0-9-])(\d+)([^0-9a-z-])

替换为:替换为$1"$2"$3

<强> Regex101 Demo

答案 1 :(得分:1)

do not have hyphen or other characters around them apart from brackets

您应该注意原始正则表达式[^a-z-0-9](\d+)[^0-9-a-z]
匹配数字周围的任何标点符号。

因此,,888+,888]*888}会匹配。

但你可能正在寻找的东西是这样的

(?:^|[\s()])(\d+)(?:[\s()]|$)

只允许空白边界或父母的边界。

[\s()]更改为[\s(][\s}]以满足您的需求。

修改:也可以获得空格分隔的数字 https://regex101.com/r/pO4mO1/3

(?:^|[\s()])(\d+(?:\s*\d)*)(?:[\s()]|$)

扩展

 (?:
      ^ 
   |  [\s()] 
 )
 (                             # (1 start)
      \d+ 
      (?: \s* \d )*
 )                             # (1 end)
 (?:
      [\s()] 
   |  $ 
 )

答案 2 :(得分:0)

当我加载Regex101时,它已经有了这个正常工作的正则表达式:[^a-z-0-9](\d+)[^0-9-a-z]

FYI(对于每个人都很困惑),在该帖子的早期版本中,正则表达式为^a-z-0-9[^0-9-a-z]。另一位用户编辑了帖子,以反映他们在演示中看到的内容。