Javascript Regexp:如果一个字母与数字相邻,则添加一个下划线

时间:2012-08-13 20:06:43

标签: javascript regex space

我需要检查数字是否在字母旁边,如果是,请添加下划线。

例如:

Grapes23 --> Grapes_23

我已经尝试了很长一段时间,但我是正则表达式的新手。我尝试了这个,但它不起作用:

str=str.replace(/([A-z]+)([0-9])/i, '_'); //if number next to letter, add underscore

感谢您的帮助,谢谢!

3 个答案:

答案 0 :(得分:5)

找一封信后跟一个数字:

str = str.replace(/([a-z])(?=[0-9])/ig, '$1_');

http://regexr.com?31qsr

这个正则表达式的工作原理:

  • ([a-z])是任何小写字母,将其包裹在parens中使其成为一个小写字母 “匹配组”
  • (?=[0-9])是“前瞻”。它基本上意味着“后跟[0-9](任何数字)”
  • i表示忽略大小写(否则我们必须使用[a-zA-Z]
  • g表示全局,或替换它找到的每个匹配项(默认只替换第一个匹配项)
  • $1表示“第一个匹配的组”,或上面第一个项目符号匹配的字母。

答案 1 :(得分:4)

在字符串上运行str.replace(/([a-zA-Z])(\d)/g,'$1_$2')。这将查找后跟数字的任何字母,捕获字母和数字(注意括号),然后用两者之间的下划线替换它们。 $ 1和$ 2是对正则表达式匹配中捕获的字母和数字的回调。

答案 2 :(得分:3)

最简单的方法是:

string.replace(/(\D​​​​​​​​​​​​)(\d)/,'$1_$2')

JS Fiddle

请注意,这只会替换第一个实例,如果您想要替换所有实例,那么我会建议上面的内容,但{{1} }(全局)标志:

g

JS Fiddle