RegEx检查时出现语法错误

时间:2018-08-06 13:11:51

标签: node.js regex url

这是我第一次在NodeJS中使用RegEx。

AIM:非常有效的URL检查。我找到了this regex。下面是我的代码,

var URL = "https://www.google.com/";
var regEx = "^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$";
if(URL.match(regEx)) {
   console.log('matches');
} else {
   console.log('doesnt match');
}

现在,我遇到一些语法错误,但找不到解决方案。错误就像“字符类中的范围混乱”。我不知道字符类或RegEx。请,有人帮助:)。

2 个答案:

答案 0 :(得分:0)

这是因为您提供的正则表达式为String

尝试关注

var URL = "https://www.google.com/";
var regEx = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$/;

if(URL.match(regEx)) {
    console.log('matches');
} else {
    console.log('doesnt match');
}

您可以阅读https://www.w3schools.com/jsref/jsref_obj_regexp.asp,以获取有关javascript中正则表达式的更多详细信息。

var t = /^foo(bar)?$/i;
alert(t instanceof RegExp);//returns true

请记住,由于Regex不是原始数据类型,而是RegExp(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp)的objext

答案 1 :(得分:0)

将代码更改为以下

var URL = "https://www.google.com/";
var regEx = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\ 
(\)\*\+,;=.]+$/;
if(URL.match(regEx)) {
   console.log('matches');
 } else {
   console.log('doesnt match');
 }