正则表达式在node.js中让我感到困惑

时间:2018-08-02 10:55:51

标签: javascript node.js regex

我有类似以下的代码

const regexurl=/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
const regexemail = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/;
let content = "adsfl@asldfdsalf.com asfdsafdasklfjkd fdsaklfjkdlasjfldsajflasdf.comasafdsalf 1238djd.com"
console.log(regexurl.test(content))
console.log(regexemail.test(content))

我认为regexurlregexemail都应返回true,因为在字符串content中,它具有emailurl,但是实际上,regexurl返回true,但是regexemail返回false。这是我的问题

首先,为什么regexemail返回falseemail中有content

第二,我想确定字符串是否包含网址,该怎么办?仍然使用上面的示例

const regexurl=/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
let content = "adsfl@asldfdsalf.com"
console.log(regexurl.test(content))

它也返回true,但它应该返回false

1 个答案:

答案 0 :(得分:1)

没关系,根据您的电子邮件正则表达式,它应以(。[a-zA-Z0-9 _-] +。

结尾

在以下情况下,它以正则表达式中定义的结尾(任何英语字母,数字,-或_):

let content = "adsfl@asldfdsalf.com"

但是在下面的情况下,您有空格,:和其他字符(根据电子邮件正则表达式是不允许的)。

let content = "adsfl@asldfdsalf.com asfdsafdasklfjkd fdsaklfjkdlasjfldsajflasdf.comasafdsalf 1238djd.com"

所以请把它与大文本分开,然后尝试使用正则表达式。这将是正确的方法。

我们绝不会像您尝试的那样检查验证。我们总是提取特定内容并在其上应用正则表达式。