Javascript RegExp-它包括空格和括号

Javascript RegExp - it include space and brackets around

本文关键字:空格 包括 RegExp- Javascript      更新时间:2024-06-27

正则表达式的noob位

请检查我的尝试。

我想将没有连字符或其他字符的数字从括号中分离出来,然后在这些数字周围加引号

到目前为止,我有[^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)

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

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

Regex:([^a-z0-9-])('d+)([^0-9a-z-])

要进行的替换:$1"$2"$3 替换

Regex101演示

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()] 
   |  $ 
 )

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

仅供参考(对于所有困惑的人),在帖子的早期修订中,正则表达式是^a-z-0-9[^0-9-a-z]。另一位用户编辑了帖子,以反映他们在演示中看到的内容。