我有这个正则表达式语法:“(?<=[a-z])-(?=[a-z])”
它捕获 2 个小写字母之间的破折号。在下面的示例中,捕获了第二个破折号:
克雷尼察-兹德鲁伊,ul。乌兹德罗乔瓦
不幸的是我不能在 JS 中使用 <= 。 我的最终目标是使用 RegEx 替换删除连字符。
最佳答案
在我看来,您需要删除小写字母之间的连字符。
使用
var s = "Krynica-Zdrój, ul. Uzdro-jowa";
var res = s.replace(/([a-z])-(?=[a-z])/g, "$1");
console.log(res);
请注意,第一个lookbehind变成了一个简单的捕获组,第二个lookahead可以使用,因为 - 可能,如果存在连字符的单个小写字母 block - 它将能够处理重叠的匹配。
详细信息:
([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
关于javascript - 将 php 和 python 中的 RegEx 语法转换为 JS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639589/