正则表达式仅允许使用数字,字母,空格和连字符 - Java
需要允许用户只输入数字或字母或空格或连字符或上述任意组合。正则表达式仅允许使用数字,字母,空格和连字符 - Java
和我尝试以下
String regex = "/^[0-9A-Za-z\s\-]+$/";
sampleString.matches(regex);
,但它不能正常工作。请有人帮我解决请。
问题:你的正则表达式试图在开始和结束时
在java中有前后正则表达式所以用不用的/
,java!=javascript
"^[0-9A-Za-z\\s-]+$"
^[0-9A-Za-z\\s-]+$
匹配/
符号: ^
开始比赛
[0-9A-Za-z\\s-]+
:一个或多个字母,数字,空格和-
$
:比赛
感谢您的答案,顺便说一句,我没有投票你的答案:)我从来没有这样做过。 – SAR
@SAR我很高兴,我可以帮助,我永远不会这么做:) –
sidenote:请注意回答和评论之间的时间范围 –
您是接近,但需要做出两个改变的结束。 第一个是双逃逸(即使用\\而不是\)。这是由于Java的怪异(请参见Javadoc for the Pattern class中的“反斜杠,转义和引用”一节)。第二件事是删除显式引用到字符串的开始和结尾。这在使用matches()时会被隐含。所以,正确的Java代码
String regex = "[0-9A-Za-z\\s\\-]+";
sampleString.matches(regex);
虽然这会工作,你也可以替换\ d的“0-9”的参考和下降的转义“ - ”。这给你
String regex = "[\\dA-Za-z\\s-]+";
不是downvoter,但没有必要逃避' - ',尝试它,但如果你downvoted,因为downvoter认为这是一个错字,那么请原谅我说它是由符号构成的正则表达式,很多帖子只会是拼写错误 –
你是对的。我打字速度很快,并将我的答案基于原始海报的正则表达式。我的坏:)对于这个问题,如果清理,那么0-9可以被\\ d替换。 –
你可以随时编辑你的答案,继续 –
Java不使用'/ regex/flags'语法。删除''/''。 – Pshemo