我想在此问题How to validate an email address in JavaScript?
的答案中使用正则表达式模式,但所有人都在符号@
上显示红色波浪线。是什么原因以及如何解决这个问题?
/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
这是我的js函数:
<!--language: lang-js-->
$('input.filled-in').change(function () {
check_bname(this, $(this).next().next().children().first());
})
function check_bname(input, errorMsg) {
var patternEmail = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
$elemInput = $(input),
$elemError = errorMsg,
$inputVal = $(input).val(),
attrName = $elemInput.attr("id");
if($elemInput.hasClass("filled-in"))
{
patternMatch = $inputVal !==''&& patternEmail.test($inputVal);
}
$elemError[patternMatch ? 'hide' : 'show']();
}
if (!patternMatch) {
if($elemInput.hasClass("filled-in"))
{
$elemError.html($inputVal === '' ? "Should not be empty" : "Use valid form of Email Address e.g (example@example.com)");
}
}
答案 0 :(得分:1)
您的正则表达式中的任何字符都看不到任何问题。
此JS示例使用您的正则表达式。
function getPattern()
{
var pattern = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return pattern;
}
var patn = getPattern();
var estr = "www.google.com";
var match;
if ( match = estr.match( patn ) )
console.log( match[0] );
else
console.log( "No match" );
答案 1 :(得分:0)
正则表达式可以。这必须是错误的语法检查。在JavaScript中以这种形式使用正则表达式时,许多IDE都会显示警告或错误。您可以像这样抑制警告或更改正则表达式:
var patternEmail = new RegExp('^(([^<>()\\[\\]\\.,;:\\s@\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\"]+)*)|(\\".+\\"))@(([^<>()[\\]\\.,;:\\s@\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\"]{2,})$','i');
patternEmail.test($inputVal);
注意:\必须以这种形式转义。使用\\代替
我会警告您,因为在这种情况下,其他形式会更好。
哪个IDE显示红色的波浪线?