REGEX :仅接受字母数字字符和空格,表达式开头或结尾的空格除外
REGEX : accept only alphanumeric characters and spaces except the spaces at the begining or ending of expression
我需要实现只接受字母数字字符和空格的正则表达式,表达式开头或结尾的空格除外。
' aaaa978aa' ===> fail
'aaaaaa ' ===> fail
'aaaaaaaaAAAa' ===> match
'aaaaaaa aaa' ===> match
'68776 67576' ===> match
'aAAAa756Gaaa' ===> match
在不区分大小写的模式下,我会编写如下正则表达式:
^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$
这需要一个前导字母数字字符,以及可选的中间字母或空格,也以字母数字字符结尾,至少对于长度为 2 个或更多字符的情况。
示例代码:
var inputs = [" aaaa978aa", "aaaaaa ", "aaaaaaaaAAAa", "aaaaaaa aaa", "68776 67576", "aAAAa756Gaaa"];
inputs.forEach(x => console.log(x + (/^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$/i.test(x) ? " : match" : " : fail")));
试试这个:
^\w+(?:[ \t]+)?\w+$
^
:断言行首的位置
\w+
:匹配任何单词字符(相当于 [a-zA-Z0-9_]),一次到无限次。
(?:[ \t]+)?
: 非捕获组,匹配空格和制表符,?
保证匹配前一个token 0到1次。
$
: 断言行尾的位置
我需要实现只接受字母数字字符和空格的正则表达式,表达式开头或结尾的空格除外。
' aaaa978aa' ===> fail
'aaaaaa ' ===> fail
'aaaaaaaaAAAa' ===> match
'aaaaaaa aaa' ===> match
'68776 67576' ===> match
'aAAAa756Gaaa' ===> match
在不区分大小写的模式下,我会编写如下正则表达式:
^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$
这需要一个前导字母数字字符,以及可选的中间字母或空格,也以字母数字字符结尾,至少对于长度为 2 个或更多字符的情况。
示例代码:
var inputs = [" aaaa978aa", "aaaaaa ", "aaaaaaaaAAAa", "aaaaaaa aaa", "68776 67576", "aAAAa756Gaaa"];
inputs.forEach(x => console.log(x + (/^[a-z0-9](?:[a-z0-9 ]*[a-z0-9])?$/i.test(x) ? " : match" : " : fail")));
试试这个:
^\w+(?:[ \t]+)?\w+$
^
:断言行首的位置
\w+
:匹配任何单词字符(相当于 [a-zA-Z0-9_]),一次到无限次。
(?:[ \t]+)?
: 非捕获组,匹配空格和制表符,?
保证匹配前一个token 0到1次。
$
: 断言行尾的位置