正则表达式允许在单词之间使用标点符号和空格



我想要一个正则表达式,它可以防止空格,并且只允许带有标点符号的字母和数字(西班牙语(。下面的正则表达式工作得很好,但它不允许使用标点符号。

^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$

例如,当使用这个正则表达式";Hola como estas";很好,但是";你好,是吗"不匹配。

如何将其调整为标点符号?

使用W+而不是空格,并在末尾添加W*

/^[a-zA-Z0-9_]+(?:W+[a-zA-Z0-9_]+)*W*$/

查看验证

解释

EXPLANATION
--------------------------------------------------------------------------------
^                        the beginning of the string
--------------------------------------------------------------------------------
[a-zA-Z0-9_]+            any character of: 'a' to 'z', 'A' to 'Z',
'0' to '9', '_' (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
(?:                      group, but do not capture (0 or more times
(matching the most amount possible)):
--------------------------------------------------------------------------------
W+                      non-word characters (all but a-z, A-Z, 0-
9, _) (1 or more times (matching the
most amount possible))
--------------------------------------------------------------------------------
[a-zA-Z0-9_]+            any character of: 'a' to 'z', 'A' to
'Z', '0' to '9', '_' (1 or more times
(matching the most amount possible))
--------------------------------------------------------------------------------
)*                       end of grouping
--------------------------------------------------------------------------------
W*                      non-word characters (all but a-z, A-Z, 0-
9, _) (0 or more times (matching the most
amount possible))
--------------------------------------------------------------------------------
$                        before an optional n, and the end of the
string

相关内容

  • 没有找到相关文章

最新更新