正则表达式在Coldfusion中抛出错误但在JS

时间:2017-04-24 18:50:38

标签: regex coldfusion

我有一个我在Javascript中使用的电子邮件正则表达式并且工作正常,但是当我尝试在Coldfusion中使用它时,我收到错误。

正则表达式是:

<cfset regex = '^[a-zA-Z0-9.!#\$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:(\.[a-zA-Z0-9-]+)+)+$'>

我得到的错误是:

  

CFML编译器正在处理:

     

一个以/'开头的表达式,在第28行,第16列。这条消息是   通常由表达式结构中的问题引起。一个cfset标签   从第28行第2栏开始。

似乎在抱怨/,但我已将其转义\/。此外,据我所知,它不在第16列。当我在/之前或之后添加字符时,行号不会改变。例如,如果我将字符添加到变量名称,则确实如此。

我尝试使用和不使用转义反斜杠,将正则表达式括在/.../和parens (^....$)中。

正则表达式应该将整个单词与有效的电子邮件地址匹配,例如sample@me.comanother@some.sub.net等。

如果有空格或无效字符,例如:not@valid@email.com' toomuch@space.com 'wrong.pattern@foo

,则不匹配

有人看到我的错误在哪里吗?

1 个答案:

答案 0 :(得分:2)

在ColdFusion中,您需要转义#。您可以通过添加连续的##

来完成此操作
<cfset regex = '^[a-zA-Z0-9.!##\$%&’*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:(\.[a-zA-Z0-9-]+)+)+$'>