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

gra*_*ray 1 javascript regex space

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

例如:

Grapes23 --> Grapes_23
Run Code Online (Sandbox Code Playgroud)

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

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

我很感激任何帮助,谢谢!

jba*_*bey 5

寻找一个字母后跟一个数字:

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

http://regexr.com?31qsr

这个正则表达式如何工作:

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