3

我正在查看用于验证(OWASP Regex Repository)中的各种数据类型的正则表达式。

其中一个正则表达式被调用safetext,看起来像:

^[a-zA-Z0-9\s.\-]+$

我的第一个问题是:
这个正则表达式正确吗?

补充问题
如果这个正则表达式存储库有什么好处吗?

更新
我主要对未转义的.

4

1 回答 1

3

链接页面中正则表达式的描述为“大小写字母和所有数字”。但正则表达式^[a-zA-Z0-9\s.\-]+$也允许使用空格、句点和连字符。

正则表达式确保字符串仅包含字母数字字符、空格、句点和连字符,并且字符串不为空。我不熟悉上下文,但我猜他们将其命名为 safetext 的原因可能是它不允许尖括号(同时允许在文本区域中正常使用的字符),从而防止脚本注入。

.点不是字符类中的元字符[]。因此,您无需在方括号内转义句点。

字符类中唯一的特殊字符或元字符是右括号 ( ])、反斜杠 ( \)、插入符号 ( ^) 和连字符 ( -)。通常的元字符是字符类中的普通字符,不需要用反斜杠转义。

大多数正则表达式风格都允许未转义的连字符,只要您将它们放在字符类的开头或结尾即可。中的连字符[!#@-]是字面的,但中[!#-@]的不是。第一个表示四个符号之一,而第二个表示!和 的 ASCII 值(包括)之间的所有字符#@即 ASCII 35 到 64。

至于图书馆是否很好,我会说这是一个很好的起点。您可能希望根据您的要求修改它们。例如,他们的密码正则表达式展示了如何使用正向预读来检查是否出现至少一个小写/大写/数字等。但它只允许长度在 4 到 8 之间的字符串:您可能希望允许更长的密码。

于 2010-05-18T07:11:38.883 回答