2017-01-03 6 views
1

Вот мое регулярное выражение для проверки адреса:Regex для принятия персидских символов в адресе

^((([\u0600-\u06FF])+\s?([0-9()،,-]?)+\s?))+$

но когда адрес содержит / или \ характера, RegexMatchTimeoutException происходит.

здесь образец ввода:

"تهران - خیابان سهروردی - خیابان 19 شرقی، کوچه 59, پلاک 39525،/طبقه ٣"

ответ

2

Проблема с регулярным выражением является то, что она содержит вложенные кванторов, которые количественно дополнительные шаблоны.

Использование линейная логика:

^[\u0600-\u06FF]+(?:[\s0-9()،,-]+[\u0600-\u06FF]+)*$ 

Смотрите regex demo

Детали:

  • ^ - начало строки
  • [\u0600-\u06FF]+ - 1 или более символов из заданного Unicode диапазон
  • (?:[\s0-9()،,-]+[\u0600-\u06FF]+)* - 0+ последовательности:
    • [\s0-9()،,-]+ - 1+ символы: либо пробелы, цифры, (, ), ،, , или -
    • [\u0600-\u06FF]+ - 1 или более символов из заданного диапазона Unicode
  • $ - конец строки.

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

  • Нет связанных вопросов^_^