我有类似以下的代码
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))
我认为regexurl
和regexemail
都应返回true
,因为在字符串content
中,它具有email
和url
,但是实际上,regexurl
返回true
,但是regexemail
返回false
。这是我的问题
首先,为什么regexemail
返回false
? email
中有content
。
第二,我想确定字符串是否包含网址,该怎么办?仍然使用上面的示例
const regexurl=/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/;
let content = "adsfl@asldfdsalf.com"
console.log(regexurl.test(content))
它也返回true
,但它应该返回false
。
答案 0 :(得分:1)
没关系,根据您的电子邮件正则表达式,它应以(。[a-zA-Z0-9 _-] +。
结尾在以下情况下,它以正则表达式中定义的结尾(任何英语字母,数字,-或_):
let content = "adsfl@asldfdsalf.com"
但是在下面的情况下,您有空格,:和其他字符(根据电子邮件正则表达式是不允许的)。
let content = "adsfl@asldfdsalf.com asfdsafdasklfjkd fdsaklfjkdlasjfldsajflasdf.comasafdsalf 1238djd.com"
所以请把它与大文本分开,然后尝试使用正则表达式。这将是正确的方法。
我们绝不会像您尝试的那样检查验证。我们总是提取特定内容并在其上应用正则表达式。