如何解决此正则表达式,以免碰到HYDRAULIC
之类的扩展,而仅将HYD
和HYD.
转换为HYDRAULIC
并解决空间问题(对于{{ 1}})?
正则表达式(HYD.CYLINDER
和hyd.
):
hyd
测试字符串:
\b(hyd)(?:\s|$|[^\w])
替换:
HYD. CYLINDER
HYD CYLINDER
HYD.CYLINDER
HYDRAULIC CYLINDER
CYLINDER,HYD.
CYLINDER,HYDRAULIC
CYLINDER,HYD
CYLINDER, HYD.
CYLINDER, HYDRAULIC
CYLINDER,HYD
答案 0 :(得分:1)
您可以使用
s = s.replace(/\bhyd(?:\.|\b)([a-z0-9]?)/gi, function($0, $1) {
return "HYDRAULIC" + ($1 ? " " + $1 : "") ;
})
请参见regex demo。
正则表达式详细信息
\b
-前导词边界hyd
-子字符串(?:\.|\b)
-点或单词边界([a-z0-9]?)
-捕获组1:一个可选的字母数字字符。如果第1组匹配,则将匹配替换为HYDRAULIC
+空格+在第1组中捕获的字母,否则,仅替换为HYDRAULIC
。
请注意,\bhyd(?:\.|\b)
和\bhyd\b\.?
suggested by The fourth bird是同义词。
JS演示:
var strs = ['HYD. CYLINDER','HYD CYLINDER','HYD.CYLINDER','HYDRAULIC CYLINDER','CYLINDER,HYD.','CYLINDER,HYDRAULIC','CYLINDER,HYD','CYLINDER, HYD.','CYLINDER, HYDRAULIC','CYLINDER,HYD'];
var rx = /\bhyd(?:\.|\b)([a-z0-9]?)/gi;
for (var s of strs) {
console.log(s, "=>", s.replace(rx, function($0, $1) {
return "HYDRAULIC" + ($1 ? " " + $1 : "") ;
}))
}
答案 1 :(得分:0)
一种方法:最好的方法不是使用此正则表达式:
\b(hyd\.?)(?:\s|$|[^\w])
和带有“ HYDRAULIC”的子项,在末尾有空格
答案 2 :(得分:0)