2014-04-10 3 views
0

Я пытаюсь найти выражение регулярного выражения, которое соответствует строке, которая имеет только символы, не содержащие алфавита.Regex match, если String не имеет буквенно-цифровых символов

Например:

  • ".." будет true
  • ".dds!f" будет false
  • и "sdjhgfsjd" будет false.

Я пробовал str.matches("\\p{Punct}"), но это похоже, похоже, соответствует одному символу связи. например. ".".matches("\\p{Punct}") будет правдой, но "..".matches("\\p{Punct}") будет ложным.

Я полагаю, что эквивалентный вопрос также должен совпадать, если в строке есть алфавитно-цифровой символ.

+0

Не можете ли вы сделать то, что соответствует, и поставить перед собой '!'? Как '! StringVar.matches (" [A-Za-z0-9] ");' – AntonH

+1

Прежде всего вам нужно добавить '+' для соответствия одному или нескольким '\ p {Punct}'. Второе: что относительно белых пространств (они не являются алфавитно-цифровыми, но также не '\ p {Punct}'), должны ли они быть сопоставлены или нет? Также должны быть сопоставлены символы, которые являются алфавитами на других языках рядом с английским, например 'źźć'? – Pshemo

+0

Спасибо, что Pshemo добавил, что + работал. Я имел в виду, что если бы я мог получить выражение, сопоставляемое с любым буквенно-цифровым символом, я мог бы просто отрицать его и получить решение моего первоначального вопроса о сопоставлении строк, которые имеют только не буквенно-цифровые символы. Также в моем конкретном случае использования не должно быть пробелов или других символов языка. Еще раз спасибо. – user1893354

ответ

2

Это соответствует строкам, не содержащие букв или цифр:

^[^a-zA-Z0-9]*$ 

Regular expression visualization

Debuggex Demo

И это соответствует строкам, по крайней мере, одну букву или цифру:

^.*[a-zA-Z0-9].*$ 

Regular expression visualization

Debuggex Demo

Пожалуйста, посмотрите через Stack Overflow Regular Expressions FAQ для некоторых более полезной информации.

1

ли не просто

[^A-Za-z0-9]* 

работу?

2

кажется, что вы можете использовать

str.matches("\\P{Alnum}") 

Alnum короче форма алфавитного и числовой. Также \P{Alnum} является отрицанием \p{Alnum}. Поэтому это регулярное выражение вернет true, если строка содержит только один или несколько символов, которые не являются буквенно-цифровыми.Если вы хотите также принять пустые строки, измените + на *.

Смежные вопросы