面對相同的問題,並通過顛倒原始正則表達式模式並用lookahead替換lookbehind來解決它。最後一個技巧是反轉要對照正則表達式進行測試的輸入字符串。
這個想法在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>
的Javascript正則表達式不支持向後看斷言。 – lanzz
@lanzz你不能這樣做:http://stackoverflow.com/a/7376273/1240268。請同時參閱http://sscce.org/ –
@hayden可能會支持預見。我沒有時間深入研究正則表達式來提供一種替代方法,這並不是一個小問題,因此我的評論不是回答。 – lanzz