我想创建一个正则表达式,以允许字符和数字的所有组合以及点的开头,但不允许点。因此有效的字符串可以是“ 1.2.3”或“ 1.b.34d”。但我想禁止使用“。”之类的字符串。或“ .1.2.3”。
我正在尝试
[^.]{0,1}[ a-zA-Z_\\-\\.0-9]*
但这是行不通的。有人有更好的主意吗?
您可以使用
s.matches("(?!\\.)[\\w\\s.-]*")
该模式将匹配.
由于负前瞻 而不以a开头的字符串,(?!\\.)
并且包含零个或多个单词字符(字母,数字或下划线- \w
),空格(\s
).
或-
符号。注意你不需要^
/ \A
,也不$
/\z
自String#matches()
方法锚默认模式。
注意:要使此模式具有Unicode意识,请在模式的开头添加(?U)
(一个Pattern.UNICODE_CHARACTER_CLASS
嵌入式标志选项)s.matches("(?U)(?!\\.)[\\w\\s.-]*")
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句