有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

正则表达式Java与正则表达式Javascript

我有一个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;
    cancel = true;
}

在JavaScript中,我想测试同样的代码,所以我使用了:

var re = /^[\w ]+$/;
if (!re.test(company)) {
...
}

除了Java版本接受字符ä、ö、ü、ó、á(…)之外,一切都正常而JavaScript版本不会

不知道上面提到的代码之间的区别在哪里

最后,最重要的是两者(JavaScript和Java)的工作原理完全相同

目标: 获取与Java (^[\\w ]+$)中完全相同的Javascript正则表达式


共 (2) 个答案

  1. # 1 楼答案

    请使用下面的正则表达式

    var re=^[äöüß]*$
    

    上面的正则表达式也允许使用这些字符

    如果你想使用特殊字符和字母,请使用下面的一个

    var re=^[A-Za-z0-9!@#$%^&*äöüß()_]*$
    
  2. # 2 楼答案

    因此,最先进的技术是,必须使用库才能在javascript中获得与java相同的结果

    由于这对我来说不是一个真正的解决方案,我只是在JavaScript中使用它:

                var re = /^[A-Za-z0-9_öäüÖÄÜß ]+$/;
    

    这是一个Java版本:

    private static final String NAME_REGEX = "^[A-Za-z0-9_öäüÖÄÜß ]+$";
    

    所以这两种环境中的情况似乎完全相同

    谢谢你的帮助