regex如何在java中编写和使用正则表达式
我想用java编写一个正则表达式,它将接受包含字母、数字和空格的字符串
字符串应仅包含上述字符,而不包含其他特殊字符。如何用java编写正则表达式
我尝试了以下方法,当我将其作为java应用程序运行时,它可以正常工作
但当我在web应用程序中运行并通过XML接受值时,它接受“/”
String test1 = null;
Scanner scan = new Scanner(System.in);
test1 = scan.nextLine();
String alphaExp = "^[a-zA-Z0-9-]*$";
Pattern r = Pattern.compile(alphaExp);
Matcher m = r.matcher(test1);
boolean flag = m.lookingAt();
System.out.println(flag);
有人能帮我吗
# 1 楼答案
请注意
*
量词将使其与所有内容匹配,包括不匹配(0次或多次,如空行或空白标记""
)如果改为使用}" ,它将为Java正则表达式代码中的每个
+
"^{\
匹配一个或多个(考虑使用\\
),如下所示:“[\\w\\d\\s-]+
”认为{{CD1>}是一个数量操作符,它工作为^ {CD9>},^ {< CD3>}工作得像^ {CD11>}
# 2 楼答案
我认为你只是缺少了字符类中的一个空格——因为你在文本中提到了它
^[a-zA-Z0-9 -]*$
您也可以添加
Pattern.MULTILINE
标志,以便指定模式处理线条的方式:# 3 楼答案
您可以尝试使用POSIX字符类(请参见here):
使用此正则表达式,如果传递的字符串包含字母数字或空格字符以外的任何字符,则结果将不匹配