正则表达式中的一些字符为javascript在使用cshtml时给出了编译错误

时间:2019-07-13 18:11:54

标签: javascript regex asp.net-mvc

我想在此问题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)");

                }
            }

2 个答案:

答案 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显示红色的波浪线?