正则表达式:如何将字符集限制应用于整个表达式
RegEx: How to apply a Character Set restriction to a whole Expression
假设我有一个用于验证电子邮件地址的正则表达式,例如:
/^(([^<>()\[\]\.,;:\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,}))$/
现在,假设我还想确保以下字符集也适用于整个字符串:
[\x00-\x7F]
我将如何将第二个字符集限制应用于整个模式。
结果是:
- jake.howlett@howlett.house(通过)
- jake.howẟlett@howlett.house(失败,因为 ẟ 在第二个字符集之外)
您可以在检查字符串的开头后将其添加到正前瞻中:
^(?=[\x00-\x7F]+$)your_pattern_here
^^^^^^^^^^^^^^^^^
用^
检查字符串位置的开始后,(?=[\x00-\x7F]+$)
将被执行一次并且要求整个字符串只由ASCII字符组成(注意+
匹配1或更多次,并且 $
测试字符串位置的结尾)。
正则表达式看起来像
^(?=[\x00-\x7F]+$)(([^<>()\[\]\.,;:\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,}))$
假设我有一个用于验证电子邮件地址的正则表达式,例如:
/^(([^<>()\[\]\.,;:\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,}))$/
现在,假设我还想确保以下字符集也适用于整个字符串:
[\x00-\x7F]
我将如何将第二个字符集限制应用于整个模式。
结果是:
- jake.howlett@howlett.house(通过)
- jake.howẟlett@howlett.house(失败,因为 ẟ 在第二个字符集之外)
您可以在检查字符串的开头后将其添加到正前瞻中:
^(?=[\x00-\x7F]+$)your_pattern_here
^^^^^^^^^^^^^^^^^
用^
检查字符串位置的开始后,(?=[\x00-\x7F]+$)
将被执行一次并且要求整个字符串只由ASCII字符组成(注意+
匹配1或更多次,并且 $
测试字符串位置的结尾)。
正则表达式看起来像
^(?=[\x00-\x7F]+$)(([^<>()\[\]\.,;:\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,}))$