正则表达式Java与正则表达式Javascript
我有一个web应用程序和一个Android应用程序,我想在其中检查输入 现在我用Java创建了这个正则表达式:正则表达式Java与正则表达式Javascript,javascript,java,android,regex,Javascript,Java,Android,Regex,我有一个web应用程序和一个Android应用程序,我想在其中检查输入 现在我用Java创建了这个正则表达式: private static final String NAME_REGEX = "^[\\w ]+$"; if (!Pattern.matches(NAME_REGEX, name)) { mNameView.setError(getString(R.string.error_field_noname)); focusView = mNameView; can
private static final String NAME_REGEX = "^[\\w ]+$";
if (!Pattern.matches(NAME_REGEX, name)) {
mNameView.setError(getString(R.string.error_field_noname));
focusView = mNameView;
cancel = true;
}
在JavaScript中,我想测试相同的代码,因此我使用了:
var re = /^[\w ]+$/;
if (!re.test(company)) {
...
}
除了Java版本接受字符ä、ö、ü、ó、á(…)和JavaScript版本不接受字符以外,一切都正常
不知道上面提到的代码之间的区别在哪里
最后,最重要的是两者(JavaScript和Java)的工作原理完全相同
目标:
获取与Java中完全相同的Javascript正则表达式(^[\\w]+$)请使用以下正则表达式
var re=^[äöüß]*$
上面的正则表达式也允许使用这些字符
如果您想使用特殊字符和字母,请使用下面的一个
var re=^[A-Za-z0-9!@#$%^&*äöüß()_]*$
试试这个:
/^[\wäöüß]+$/i
请注意“不区分大小写”的修饰符i
,否则它将不匹配
这些语言使用不同的引擎来读取RegExp。Java比JavaScript更好地支持unicode
请参阅:最先进的技术是,必须使用库才能在javascript中获得与在java中相同的结果 由于这对我来说不是一个真正的解决方案,我只是在JavaScript中使用它:
var re = /^[A-Za-z0-9_öäüÖÄÜß ]+$/;
这是一个Java版本:
private static final String NAME_REGEX = "^[A-Za-z0-9_öäüÖÄÜß ]+$";
因此,这两种环境中的情况似乎完全相同
谢谢你的帮助 如果你不想重新发明轮子,你就必须使用它。或者为接受的字母创建一个字符类。是否需要接受所有Unicode基本字母?看一看。只需在re变量中的character类中添加
(并删除第一个#
)。感谢您的建议,但是像Ó、á等字符也可以使用。这就是java中的行为,这就是我想在Javascript中实现的。所以你可以阅读这篇文章的答案:。