7

我有一个匹配字母、数字、_ 和 - 的正则表达式(具有最小和最大长度)。

^[a-zA-Z0-9_-]{3,100}$

我想在该组字符中包含空格。

根据 Python 文档:

集合内也接受诸如 \w 或 \S 之类的字符类。

所以我尝试了:

^[a-zA-Z0-9_-\s]{3,100}$

但它给出了错误的字符范围错误。如何在上述集合中包含空格?

4

3 回答 3

23

问题不在于指示字符范围的,\s而是-指示字符范围的,除非它位于类的末尾或开头。用这个:

^[a-zA-Z0-9_\s-]{3,100}$
于 2012-10-30T15:34:27.110 回答
3

^[-a-zA-Z0-9_\s]{3,100}

_-\s被解释为一个范围。代表自身的破折号必须是 [...] 中的第一个或最后一个字符

于 2012-10-30T15:36:00.733 回答
-1

你在正确的轨道上,添加第二个反斜杠来转义斜杠,因为反斜杠是一个转义字符。

^[a-zA-Z0-9_\\-\\s]{3,100}$
于 2016-05-27T02:29:25.487 回答