Java 正则表达式。把我弄糊涂了

Java 正则表达式。把我弄糊涂了,java,regex,Java,Regex,在Java中,我有Pattern.compile(“^[.]+”)。它只匹配字符 我把它改为Pattern.compile(“^.+”),然后它匹配JavaScript中的任何字符 但是,在JavaScript中,^[\w.]+匹配特殊字符,例如abc**。我很困惑 我不知道为什么/^[\w.]+/.test('abc**')在js和java中的工作方式不同 ^[\w.]+与abc**不匹配,而是字符串的一部分。根据您使用正则表达式的方式,它将搜索整个字符串中的匹配项或字符串的部分中的匹配项 在

在Java中,我有
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