Java 正则表达式。把我弄糊涂了
在Java中,我有Java 正则表达式。把我弄糊涂了,java,regex,Java,Regex,在Java中,我有Pattern.compile(“^[.]+”)。它只匹配字符 我把它改为Pattern.compile(“^.+”),然后它匹配JavaScript中的任何字符 但是,在JavaScript中,^[\w.]+匹配特殊字符,例如abc**。我很困惑 我不知道为什么/^[\w.]+/.test('abc**')在js和java中的工作方式不同 ^[\w.]+与abc**不匹配,而是字符串的一部分。根据您使用正则表达式的方式,它将搜索整个字符串中的匹配项或字符串的部分中的匹配项 在
Pattern.compile(“^[.]+”)代码>。它只匹配
字符
我把它改为Pattern.compile(“^.+”)代码>,然后它匹配JavaScript中的任何字符
但是,在JavaScript中,^[\w.]+
匹配特殊字符,例如abc**
。我很困惑
我不知道为什么/^[\w.]+/.test('abc**')
在js和java中的工作方式不同
^[\w.]+
与abc**
不匹配,而是字符串的一部分。根据您使用正则表达式的方式,它将搜索整个字符串中的匹配项或字符串的部分中的匹配项
在爪哇
要尝试匹配整个字符串,请使用
注:此项的简写为
要尝试匹配字符串的部分,请使用
在JavaScript中
要尝试匹配整个字符串,请在正则表达式的末尾添加一个$
,然后使用
要尝试匹配字符串的部分,只需使用
^[\w.]+
无法匹配Java中的特殊字符。您需要转义\代码>。您使用什么JavaScript代码使其与abc**
匹配?那是不可能的。它可能只在前3个字母中找到匹配项,然后停止。同时,您的Java代码可能正在查找整个字符串是否与模式匹配。@water.wang。我想你需要$
锚。你认为/^[\w.]+/.test('abc**')
有什么作用?你为什么这么认为?提示:尝试使用警报(/^[\w.]+/.test('**')编码>并比较结果。
Pattern.compile("^[\\w.]+").matcher("abc**").matches(); //false
Pattern.compile("^[\\w.]+").matcher("abc").matches(); //true
Pattern.compile("^[\\w.]+").matcher("abc**").find(); //true
Pattern.compile("^[\\w.]+").matcher("abc").find(); //true
Pattern.compile("^[\\w.]+").matcher("**").find(); //false
/^[\w.]+$/.test("abc**"); //false
/^[\w.]+$/.test("abc"); //true
/^[\w.]+/.test("abc**"); //true
/^[\w.]+/.test("abc"); //true
/^[\w.]+/.test("**"); //false