我在.NET 2.0中有一个用于电子邮件的正则表达式验证器,它使用客户端验证(javascript)。
当前的表达式是"\w+(-+.'\w+)@\w+(-.\w+).\w+(-.\w+)“,它可以满足我的需要(至少我是这么想的)。
然而,当我将Outlook中的电子邮件地址复制/粘贴到forms文本字段时,我遇到了撇号问题。
Chris.O‘’Brian@romerandomdomain.com
如果我只在文本框中键入,您可以看到撇号是一个不同于get的字符。
‘vs’-但两者都是撇号
好的,我想,让我们把这个字符添加到验证字符串中,这样我就可以得到
\w+(-+)@\w+(-.\w+).\w+(-.\w+)
我将“特殊”撇号复制到验证表达式中,然后键入电子邮件并使用相同的剪贴板项粘贴撇号,但验证仍然失败。
在文件后面的.net代码中,撇号看起来与.net表单不一样,而且由于验证仍然失败,我假定它被认为是一个不同的字符,因为.cs源文件的某种编码?
这听起来可信吗,其他人也遇到过同样的问题吗?
谢谢
发布于 2009-09-21 11:45:21
您应该在(-+.‘\w+)之后添加一个'+’,以便允许多组‘word’。你给出的表达式只允许两个单词,而你有三个词: Chris,O,Brian。
希望这能让事情更清楚。
发布于 2009-09-21 11:46:25
像Outlook这样的东西会有使用“智能引号”的倾向
下面是一些背景信息
发布于 2009-09-21 13:00:16
如果您只是将’ (U+2019 RIGHT SINGLE QUOTATION MARK)粘贴到您的文档中,但它没有工作,这意味着您的文档不使用unicode。
当您将文件编码并以UTF-8的形式发送时(例如),它可以正常工作,无需进一步修改。否则,您必须通过\u2019转义它,它也适用于JavaScript的正则表达式:
"\w+([-+.'\u2019]\w+)@\w+([-.]\w+).\w+([-.]\w+)"https://stackoverflow.com/questions/1454101
复制相似问题