2015-12-03 6 views
0

У меня есть веб-приложение и приложение для Android, в котором я хочу проверить ввод.Regex Java vs Regex Javascript

Теперь я создал этот Regex в 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) работают точно так же.

Цель: Получить регулярное выражение для JavaScript, что точно так же, как и в Java (^[\\w ]+$)

+0

Попробуйте '^ [\\ wäöüß] + $' – dotvav

+0

Вам нужно будет использовать [* XRegExp *] (http://xregexp.com/), если вы не хотите изобретать колесо. Или создайте класс символов для ваших принятых писем. Нужно ли принимать все базовые буквы Unicode? Взгляните на [мой ответ] (http://stackoverflow.com/a/31115742/3832970). Просто добавьте '_' в класс символов в * re * variable (и удалите первый' # '). –

ответ

0

Так состояние искусства в том, что нужно использовать библиотеку, чтобы получить те же результаты в JavaScript, как и в Java.

Поскольку это не является реальным решением для меня я просто использовать это в JavaScript:

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

и это один в Java:

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

Так что это, кажется, точно такой же в обе среды.

Спасибо за помощь!

0

Пожалуйста, используйте следующее регулярное выражение.

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

Вышеупомянутое регулярное выражение также позволит этим символам.

Если вы хотите использовать специальные символы и алфавиты использовать менее одного

var re=^[[email protected]#$%^&*äöüß()_]*$ 
0

Попробуйте это: /^[\wäöüß ]+$/i.

Обратите внимание, что модификатор i нечувствителен к регистру, или он не будет соответствовать.

Эти языки используют разные двигатели для чтения RegExp. Java поддерживает юникод лучше, чем JavaScript.

См: https://en.wikipedia.org/wiki/Comparison_of_regular_expression_engines#Part_2

+0

Спасибо за предложение, но такие персонажи, как Ó, á и т. Д., Также должны работать. Таким образом, это поведение в java, и это то, чего я хочу достичь в Javascript. –

+0

Хорошо, я вижу.Поэтому вы можете прочитать ответ этого сообщения: http://stackoverflow.com/questions/150033/regular-expression-to-match-non-english-characters/873600#873600. –