Javascript 我如何调整我的正则表达式以只替换缩写而不替换扩展?
如何修复此正则表达式,使其不接触诸如Javascript 我如何调整我的正则表达式以只替换缩写而不替换扩展?,javascript,regex,Javascript,Regex,如何修复此正则表达式,使其不接触诸如HYD之类的扩展,只将HYD和HYD.转换为hydral,并修复空间问题(对于HYD.cyline) 正则表达式(hyd.和hyd): 测试字符串: HYD. CYLINDER HYD CYLINDER HYD.CYLINDER HYDRAULIC CYLINDER CYLINDER,HYD. CYLINDER,HYDRAULIC CYLINDER,HYD CYLINDER, HYD. CYLINDER, HYDRAULIC CYLINDER,HYD 替代
HYD
之类的扩展,只将HYD
和HYD.
转换为hydral
,并修复空间问题(对于HYD.cyline
)
正则表达式(hyd.
和hyd
):
测试字符串:
HYD. CYLINDER
HYD CYLINDER
HYD.CYLINDER
HYDRAULIC CYLINDER
CYLINDER,HYD.
CYLINDER,HYDRAULIC
CYLINDER,HYD
CYLINDER, HYD.
CYLINDER, HYDRAULIC
CYLINDER,HYD
替代:
HYDRAULIC
HYDRAULIC CYLINDER
HYDRAULICCYLINDER
HYDRAULICCYLINDER
HYDRAULIC CYLINDER
CYLINDER,HYDRAULIC
CYLINDER,HYDRAULIC
CYLINDER,HYDRAULICCYLINDER, HYDRAULIC
CYLINDER, HYDRAULIC
CYLINDER,HYDRAULIC
一种方法:使用这个正则表达式可能不是最好的:
\b(hyd\.?)(?:\s|$|[^\w])
带有“液压”且末端有空格的接头只需使用以下模式:
\b(hyd)\W+
唯一新的是\W+
-匹配一个或多个非单词字符
然后将其替换为液压(注意末尾的空格!)
您可以使用
s = s.replace(/\bhyd(?:\.|\b)([a-z0-9]?)/gi, function($0, $1) {
return "HYDRAULIC" + ($1 ? " " + $1 : "") ;
})
看
正则表达式详细信息
\b
-前导词边界
hyd
-子字符串
(?:\.\b)
-点或字边界
([a-z0-9]?)
-捕获组1:可选字母数字字符
如果第1组匹配,则该匹配将替换为液压
+空格+第1组中捕获的字母,否则,将替换为仅液压
请注意,\bhyd(?:\.\124;\ b)
和\bhyd\b\.?
是同义词
JS演示:
var strs=[‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’、‘液压缸’;
变量rx=/\bhyd(?:\.\b)([a-z0-9]?)/gi;
用于(STR的var s){
console.log,“=>”,s.replace(rx,函数($0,$1){
返回“液压”+($1?”“+$1:”);
}))
}
您的替换是否为预期输出,或者是什么?请尝试\bhyd(?:\.\124;\ b)
,请参阅。在hyd
的末尾,检查点或单词边界。或者尝试\bhyd\b\?
如果要在字母或数字前插入空格,请尝试s.replace(/\bhyd(?:\.\b)([a-z0-9])/gi,函数($0,$1){返回“液压”+($1?”+$1:;)})
/\bhyd;如何在正则表达式中包含变量而不是字符串“hyd”?@isakalfleurvar rx=new RegExp(“\\b”+term+”(?:\\.\124;\\ b)([a-z0-9]?),“gi”)
,它是一个on SO。如果您的术语可以包含特殊字符,term.replace(/[-\/\^$*+?.()\[\]{}]/g,'\\$&')
。如果术语可以以特殊字符开头/结尾,则不能依赖\b
。
s = s.replace(/\bhyd(?:\.|\b)([a-z0-9]?)/gi, function($0, $1) {
return "HYDRAULIC" + ($1 ? " " + $1 : "") ;
})