java字符串正则表达式
您可以使用正则表达式:^[a-z-]+$
-
^
:启动锚 -
$
:尾锚 -
[..]
:字符类 -
a-z
:任何一个小写字母 -
-
:文字连字符。连字符通常是char类中的一个中间字符,但如果其作为字符类的字符处理,则其作为的第一个或末尾的。 -
+
:量词为一个或多个
如果你想允许空字符串,你可以用*
现在这里是OP可能会理解的解释。很好(+1) – 2010-09-27 12:56:36
非常感谢你,我发现正则表达式非常困难,我想不出任何其他方法来手动解决这个问题:/(我认为没有经验是那里的问题;)) – tom 2010-09-27 13:23:07
@tom不要让它得到你失望。正则表达式是可怕的野兽。需要一些程序员几年才能理解它们。如果你尝试,你会发现最终结果。这是一个Java在线正则表达式测试器:http://www.fileformat.info/tool/regex.htm。你可能想玩一下,它可能会帮助你更好地理解事物。 – 2010-09-27 15:05:12
更换+
如果字符串不匹配^[a-z-]*$
,则不允许使用的字符被输入。这种模式是anchored,这样就考虑了整个字符串,并使用repeatedcharacter class(星号指定零个或多个匹配项,因此将接受一个空字符串)以确保只使用允许的字符。
我认为连字符( - )应该被转义。 – 2010-09-27 12:36:21
@Faisal连字符如果是最后一个字符,则不需要在字符类中转义。 – 2010-09-27 12:37:51
downvoters请解释吗? – 2010-09-27 12:39:28
如果允许大写使用本:
^[A-Za-z-]+?$
否则:
^[a-z-]+?$
如果字符串这个表达式匹配^[a-z\-]*$
然后它的罚款。
@Tingu如果它是最后一个字符,则不需要在字符类中跳过连字符。看看[本文](http://www.regular-expressions.info/charclass.html)中名为“元字符内部的元字符”的部分 – 2010-09-27 12:40:55
如果字符串匹配这个正则表达式,那么它很好 - 不是吗? ?顺便说一句,连字符在字符类中的第一个/最后一个字符时不需要转义@Tingu – Amarghosh 2010-09-27 12:41:04
@Amarghosh谢谢你指出。修复了答案。 – 2010-09-27 12:49:52
你确定你需要一个正则表达式吗?在我看来,你可以简单地检查每个输入的字符。即'如果(ch> ='a')'等 – Sjoerd 2010-09-27 12:35:42
你不认真发布这样的问题来打扰人们吗?在互联网上阅读简单的正则表达式教程可以在10分钟内回答您的问题。 [Google help!](http://www.google.com/search?q=regex+java+tutorial)(是的,我认为你的问题有害) – erikbwork 2010-09-27 12:38:02
'[^ az-]'匹配除az以外的任何字符和连字符。 – Amarghosh 2010-09-27 12:43:40