我需要检查数字是否在字母旁边,如果是,请添加下划线。
例如:
Grapes23 --> Grapes_23
我已经尝试了很长一段时间,但我是正则表达式的新手。我尝试了这个,但它不起作用:
str=str.replace(/([A-z]+)([0-9])/i, '_'); //if number next to letter, add underscore
感谢您的帮助,谢谢!
答案 0 :(得分:5)
找一封信后跟一个数字:
str = str.replace(/([a-z])(?=[0-9])/ig, '$1_');
这个正则表达式的工作原理:
([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)