我想要一个正则表达式,防止空白,只允许字母和数字与标点符号(西班牙语)。下面的正则表达式运行得很好,但它不允许使用标点符号。
^[a-zA-Z0-9_]+( [a-zA-Z0-9_]+)*$例如,使用正则表达式"Hola como estas“是可以的,但是"Hola,como estás?”不匹配。
如何将其调整为标点符号?
发布于 2020-08-29 03:45:47
使用\W+代替空格,并在末尾添加\W*:
/^[a-zA-Z0-9_]+(?:\W+[a-zA-Z0-9_]+)*\W*$/请参阅proof
说明
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
stringhttps://stackoverflow.com/questions/63640013
复制相似问题