面临同样的问题并通过反转原始正则表达式模式并将lookbehind替换为lookahead来解决它。最后一个技巧是反转将要针对正则表达式进行测试的输入字符串。
这个想法在 Steven Levithan 的 Mimicking Lookbehind in JavaScript博客文章中有很好的描述。
下面是我的测试页面,您可以在其中看到有效的正则表达式:
<html>
<head>
<title>Phone Number RegExp Test Page</title>
</head>
<body>
<script>
function validateInput() {
var phoneRegex = new RegExp("^(\\d+\\s?(x|\\.txe?)\\s?)?((\\)(\\d+[\\s\\-\\.]?)?\\d+\\(|\\d+)[\\s\\-\\.]?)*(\\)([\\s\\-\\.]?\\d+)?\\d+\\+?\\((?!\\+.*)|\\d+)(\\s?\\+)?$", "i");
var input = document.getElementById("tbPhone");
var value = input.value.split("").reverse().join("");
alert(phoneRegex.test(value));
}
</script>
<input type="text" id="tbPhone" />
<button onclick="javascript:testPhone()">Validate</button>
</body>
</html>