正则表达式只允许数字,字母,空格和连字符 - Java

时间:2017-11-11 15:00:26

标签: java regex

需要允许用户仅输入数字或字母或空格或连字符或以上任何一种的组合。

我尝试了以下

String regex = "/^[0-9A-Za-z\s\-]+$/";
sampleString.matches(regex);

但它无法正常工作。请有人帮我解决。

2 个答案:

答案 0 :(得分:3)

问题:您的正则表达式尝试在开头和结尾处匹配/符号

在java中,正则表达式之前和之后不需要/所以使用java!=javascript

"^[0-9A-Za-z\\s-]+$"

^[0-9A-Za-z\\s-]+$^比赛开始

[0-9A-Za-z\\s-]+:一个或多个字母,数字,空格和-

$:比赛结束

答案 1 :(得分:0)

你很近但需要做两处更改。 第一种是双重转义(即使用\\而不是\)。这是由于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-]+";