将在PHP和python中工作的RegEx语法转换为JS

时间:2016-09-22 12:50:50

标签: javascript php python regex

我有这个RegEx语法:“(?< = [a-z]) - (?= [a-z])”

它捕获2个小写字母之间的短划线。在下面的示例中,捕获了第二个破折号:

Krynica-Zdrój,ul。 Uzdro-jowa

不幸的是我不能在JS中使用< =。 我的最终目标是使用RegEx替换删除连字符。

1 个答案:

答案 0 :(得分:1)

在我看来,你需要删除小写字母之间的连字符。

使用



var s = "Krynica-Zdrój, ul. Uzdro-jowa";
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1");
console.log(res);




请注意,第一个lookbehind变成了一个简单的捕获组,第二个前瞻可以使用,因为 - 如果有大量带连字符的单个小写字母,它将能够处理重叠匹配。

详细

  • ([a-z]) - 第1组捕获小写ASCII字母
  • - - 连字符
  • (?=[a-z]) - 后跟一个未添加到结果中的小写ASCII字母 - /g - 全局修饰符,搜索所有出现的模式
  • "$1" - 替换模式,仅包含对存储在第1组缓冲区中的值的反向引用。

VBA示例代码

Sub RemoveExtraHyphens()
Dim s As String
Dim reg As New regexp

reg.pattern = "([a-z])-(?=[a-z])"
reg.Global = True

s = "Krynica-Zdroj, ul. Uzdro-jowa"
Debug.Print reg.Replace(s, "$1")
End Sub

enter image description here