Faced the same issue and solved it by reversing original regex pattern and replacing lookbehind with lookahead. The last trick is to reverse input string that is going to be tested against the regex.
This idea is well described in Steven Levithan's Mimicking Lookbehind in JavaScript blog post.
Below is my test page where you can see the working regex:
<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>