用于在地址中接受波斯字符的正则表达式

Regex for accepting Persian characters in address

这是我用于测试地址的正则表达式:

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

但是当地址包含/\字符时,出现RegexMatchTimeoutException

这里是示例输入:

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

您的正则表达式的问题在于它包含用于量化可选模式的嵌套量词。

使用线性逻辑:

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

regex demo

详情:

  • ^ - 字符串开头
  • [\u0600-\u06FF]+ - 给定 Unicode 范围中的 1 个或多个符号
  • (?:[\s0-9()،,-]+[\u0600-\u06FF]+)* - 0+ 个序列:
    • [\s0-9()،,-]+ - 1+ 个符号:空格、数字、()،,-
    • [\u0600-\u06FF]+ - 给定 Unicode 范围中的 1 个或多个符号
  • $ - 字符串结尾。