我已经工作了很多个小时试图做一个“简单的事情”:使用正则表达式来验证文本字段。
我需要确保:
1-仅使用(a-z),(A-Z)和(0-9)值 2-只在最后添加一个SINGLE通配符。
实施例
的匹配 的
米凯*
的匹配 的
JAMES
不匹配
米凯**
不匹配
MIC_HEAL *
我现在有这个正则表达式:
[A-ZA-Z0-9 \ S - ]。?+ \ Z *
问题是当我引入无效字符时它仍然匹配,只要我有匹配的子字符串See my REGEX
如何强制整个字符串匹配?我错过了什么?
THX!
答案 0 :(得分:4)
使用^
(行首)和$
(行尾)仅匹配整个字符串:
^[a-zA-Z0-9\s-]+.\z*?$
(如果你有多行输入,你也可以使用\A
和\z
- 字符串的开头和结尾)
再来看,我不明白你的正则表达式的结束:.
(任何事情)\z
*
?
(字符串结束,零或更多)次,零或一次)。这个正则表达式将匹配:
Ikdflfdf&
这是对的吗?如果您只想要角色*
,则应使用:
^[a-zA-Z0-9\s-]+\*?$
另外,正如罗比指出的那样,你在可接受的字符列表中包含空格和-
。如果您只想要字母和数字,则快捷方式将使用\w
(单词字符):
^\w+\*$
但是,根据匹配器是否支持Unicode,\w
也将匹配非ASCII字母和数字,这可能是您想要的也可能不是。
答案 1 :(得分:4)
试试这个:
^[a-zA-Z0-9]+\*?$
^ string start
$ string end
*是元字符,因此应该像\*
一样进行转义,以将其用作字母
答案 2 :(得分:2)
我认为你刚开始需要^
而最后需要$
^[a-zA-Z0-9\s-]+.\*?$
此外,您不需要\z
此外,您没有提到要允许空格和短划线-
,但您已将它们包含在允许的字符集中。