How Do I Resolve An "invalid Quantifier" Error With Regexp In Javascript?
I'm trying to transfer the following URL validation function from my PHP code to my javascript code: this.validate_url = function(field) { var pattern = new RegExp('
Solution 1:
You either need to escape the backslashes within the string declaration:
var pattern = new RegExp("^((ht|f)tp(s?)://|~/|/)?(\\w+:\\w+@)?([a-zA-Z]{1}([\\w-]+\\.)+(\\w{2,5}))(:\\d{1,5})?((/?\\w+/)+|/?)(\\w+\\.\\w{3,4})?((\\?\\w+=\\w+)?(&\\w+=\\w+)*)?");
Or you use the regular expression literal syntax /
expr
/
flags
:
var pattern = /^((ht|f)tp(s?):\/\/|~\/|\/)?(\w+:\w+@)?([a-zA-Z]{1}([\w-]+\.)+(\w{2,5}))(:\d{1,5})?((\/?\w+\/)+|\/?)(\w+\.\w{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?/;
You should also try to use non-capturing groups (?:
expr
)
where you don’t need to reference the match of that groups.
Solution 2:
Since backslash is an escaping character in JavaScript, you'll have to escape that to write it in a string:
var pattern = new RegExp("^((ht|f)tp(s?)\\:\\/\\/|~/|/)?([\\w]+:\\w+@)?([a-zA-Z]{1}([\\w\\-]+\\.)+([\\w]{2,5}))(:[\\d]{1,5})?((/?\\w+/)+|/?)(\\w+\\.[\\w]{3,4})?((\\?\\w+=\\w+)?(&\\w+=\\w+)*)?");
Post a Comment for "How Do I Resolve An "invalid Quantifier" Error With Regexp In Javascript?"