我需要一个REGEX,它应该仅在字符串以字母或数字开头和结尾时进行验证,并且应该允许它们之间的特殊字符如下所示:
/*
hello -> pass
what -> pass
how @@are you -> pass
how are you? -> pass
hi5kjjv -> pass
8ask -> pass
yyyy. -> fail
! dff -> fail
NoSpeci@@@alcharacters -> pass
Q54445566.00 -> pass
q!Q1 -> pass
!Q1 -> fail
q!! -> fail
#NO -> fail
0.2Version -> pass
-0.2Version -> fail
*/
rex适用于上述查询,但问题是它需要至少两个有效字符:
^[A-Za-z0-9]+[ A-Za-z0-9_@./#&+$%_=;?\'\,\!-]*[A-Za-z0-9]+
如果我们通过,则失败:
a -> failed but valid
1 -> failed but valid
我尝试用*替换,但这是从一开始就接受特殊字符(@john),这是错误的。
[A-Za-z0-9]+ with [A-Za-z0-9]*
您可以使用此正则表达式:
^[A-Za-z0-9](?:[! #$%;&'+,./=?@\w-]*[A-Za-z0-9?])?$
或者,如果您的正则表达式风格支持原子组,则使用更高效的方式:
^[A-Za-z0-9](?>[! #$%;&'+,./=?@\w-]*[A-Za-z0-9?])?$
正则表达式演示
正则表达式详细信息:
^
:开始[A-Za-z0-9]
:匹配字母数字字符(?