我的服务器dev给了我一个正则表达式,他说是用户名的要求。它是@"^\w+([\s-]\w+)*$"
我需要帮助找出正确的Java表达式。令人困惑,因为我需要放一些转义字符以使编译器满意。
我正在尝试这个。如果这是对的,请告诉我:
Pattern p = Pattern.compile("^\\w+([\\s-]\\w+)*\\$", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(username);
if ((username.length() < 3 ) || (m.find())) {
log ("Invalid pattern");
return false;
}
这是对的吗?
答案 0 :(得分:3)
正确的模式是"^\\w+([\\s-]\\w+)*$"
。
$
表示字符串的结尾,如果使用\\$
,它将强制字符串具有char $
,而不是意图。
答案 1 :(得分:2)
在你的正则表达式
^\\w+([\\s-]\\w+)*\\$
^
您无需转义此$
。它表示End Of Line。
所以正确的正则表达式是:
^\\w+([\\s-]\\w+)*$
N.B。:但是,您必须确保此$
符号不是字面上的$
。在这种情况下,你必须逃避它,但我预计在这种情况下它也会在你的源RegEx中被转义。