Это мое регулярное выражение - “[\\w\\d\\p{Punct}]+”
\ р {Punct} поведение в моем андроид приложение
Это очень странное поведение \\p{Punct}
в моем приложении. Согласно документации (https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html):
\ р {Punct} - Пунктуации: Один из "# $% &«() * +, -/:; < => @ [] ^.? _` {|} ~
Но в моем приложении этот тег всегда пропускает эти символы: «$», «+», «<», «>», «=», «^», «`» , «|», «~»
abc!d => true
abc#d => true
abd$d => false
abc<>d = > false
т.д.
Я пытался использовать
Pattern pattern = Pattern.compile("[\w\d\p{Punct}]+", Pattern.UNICODE_CASE);
Там не было никакого эффект.
Anny предлагает, что я делаю неправильно?
P.S .: Я использую TextWatcher для этого. Я делаю это так:
TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// I am checking it here
// if if(!s.toString().matches("[\\w\\d\\p{Punct}]+")) => do something
}
@Override
public void afterTextChanged(Editable s) {
}
};
Когда я добавил это TextWatcher
к MyEditText
:
myEditText.addTextChangedListener(textWatcher);
@anubhava Я пробовал, но без каких-либо эффектов. – Alex