Javascript JS,RegExp,奇怪的行为

Javascript JS,RegExp,奇怪的行为,javascript,regex,Javascript,Regex,我使用简单的regexp模式验证电子邮件地址,我发现以下模式: ^[^@]+@[^@]+\.[^@]+$ 当我检查上面的模式时,它的行为符合预期(意味着它将不匹配,例如email@abcde) 因此,下面这句话: /^[^@]+@[^@]+\.[^@]+$/.test('email@abcde'); // false 但是: 什么,我在chrome和firefox上测试过,相同的行为,有人能解释吗?\。在字符串文本中不是有效的转义序列,它只是解析为。这意味着您在第二个示例中使用的正则表达式与

我使用简单的regexp模式验证电子邮件地址,我发现以下模式:

^[^@]+@[^@]+\.[^@]+$
当我检查上面的模式时,它的行为符合预期(意味着它将不匹配,例如
email@abcde

因此,下面这句话:

/^[^@]+@[^@]+\.[^@]+$/.test('email@abcde'); // false
但是:


什么,我在chrome和firefox上测试过,相同的行为,有人能解释吗?

\。
字符串文本中不是有效的转义序列,它只是解析为
。这意味着您在第二个示例中使用的正则表达式与

^[^@]+@[^@]+.[^@]+$
匹配任何字符

如果将这两个正则表达式都记录到控制台中,则可以很容易地看到差异:


\。
字符串文本中不是有效的转义序列,它只是解析为
。这意味着您在第二个示例中使用的正则表达式与

^[^@]+@[^@]+.[^@]+$
匹配任何字符

如果将这两个正则表达式都记录到控制台中,则可以很容易地看到差异:


问题在于,
\.
在正则表达式中被评估为
。换句话说,您的正则表达式实际上是:
^[^@]+@[^@]+.[^@]+$

要修复此问题,请使用
/
正则表达式分隔符:

patt = /^[^@]+@[^@]+\.[^@]+$/
patt.test("email@abcde") // false
patt.test("email@abcde.com")  // true

问题是,
\.
在正则表达式中被评估为
。换句话说,您的正则表达式实际上是:
^[^@]+@[^@]+.[^@]+$

要修复此问题,请使用
/
正则表达式分隔符:

patt = /^[^@]+@[^@]+\.[^@]+$/
patt.test("email@abcde") // false
patt.test("email@abcde.com")  // true

\.
在正则表达式文字中的含义与在字符串文字中的含义不同。
/^[^@]+@[^@]+\.[^@]+$/.source!='^[^@]+@[^@]+\.[^@]+$”
\.
在正则表达式文字中的含义与在字符串文字中的含义不同。
/^[^@]+@[^@]+\.[^@]+$/。source!=='^[^@]+\.[^@]+\.[^@]+$”
patt=newregexp('^[^@]+\.[^@]+\.[^]+$)
patt=newregexp('^[^@]+\.^@]+$)
我不知道我是怎么想的,谢谢,喜欢这个解释:)我不知道我怎么没想过,谢谢,喜欢这个解释:)