[英]regex: Match when between text but not between digits
请帮忙。 我需要一个正则表达式(在javascript中使用)替换“。” 在包含Unicode字符的文本中使用“#”。 仅当“。”时才进行替换。 出现在文本之间,但不在数字之间。
输入: “ΦΨ。ABC。DEF。123.456”
所需的输出: “ΦΨ#ABC#DEF#123.456”
有什么建议么?
您可以在正则表达式中使用捕获组并使用向后引用来获得所需的结果:
var re = /(\\D)\\.(\\D)/g; var str = 'ΦΨ. ABC. DEF. 123.456'; var subst = '$1#$2'; result = str.replace(re, subst); alert(result);
正则表达式说明:
\\D
一个非数字字符 \\.
-文字点 非数字字符被分成几组,然后在$1
和$2
反向引用的帮助下插入。
尝试这个:
var str = "ΦΨ. ABC. DEF. 123.456";
str.replace(/[^\d.]+\.[^\d]/g, function (m) {
return m.replace('.', '#')
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.