正则表达式:在文本之间匹配,但不在数字之间匹配

时间:2015-04-29 07:00:56

标签: javascript regex

请帮忙。 我需要一个正则表达式(在javascript中使用)来替换“。”在包含Unicode字符的文本中使用“#”。 更换仅在“。”时进行。出现在文本之间,但不出现在数字之间。

输入:“ΦΨ.ABC.DEF.123.456”

期望的输出:“ΦΨ#ABC#DEF#123.456”

有什么建议吗?

2 个答案:

答案 0 :(得分:6)

您可以在正则表达式中使用捕获组,并使用反向引用来获取所需的结果:

正则表达式说明:

  • var re = /(\D)\.(\D)/g; var str = 'ΦΨ. ABC. DEF. 123.456'; var subst = '$1#$2'; result = str.replace(re, subst); alert(result); - 非数字字符
  • \D - 字面点

将非数字字符捕获到组中,然后在\.$1反向引用的帮助下插回。

答案 1 :(得分:0)

试试这个:

var str =  "ΦΨ. ABC. DEF. 123.456";

str.replace(/[^\d.]+\.[^\d]/g, function (m) {
    return m.replace('.', '#')
});