使用Regex验证Unicode长度

时间:2012-08-25 06:55:44

标签: c# regex

如何使用Regex验证 1391/09/09 字符串

我希望每个单独斜线的长度精确为{4} / {2} / {2}

Unicode范围 [\ u06F0- \ u06F9]

我的长度检查有问题。

2 个答案:

答案 0 :(得分:6)

您可以使用以下正则表达式:

"^[\u06F0-\u06F9]{4}/[\u06F0-\u06F9]{2}/[\u06F0-\u06F9]{2}$"

您可能错过^以使其在字符串开头处开始匹配,而$则使其在字符串末尾结束匹配。如果没有这些更改的字符串更长,但包含您的表达式的字符串将产生匹配。

通过此更改,仅当字符串包含您的模式且目标模式的左侧或右侧没有任何额外字符时,匹配才会成功。

答案 1 :(得分:1)

这个正则表达式适合你:

"(^|[^\u06F0-\u06F9]{1})[\u06F0-\u06F9]{4}/[\u06F0-\u06F9]{2}/[\u06F0-\u06F9]{2}([^\u06F0-\u06F9]{1}|$)"

匹配以下条件的两者下的日期表达式:

  • 条件1:在字符串开头的 之后<\ n> <\ n> p>

  • 条件2:在字符串末尾的 之前,不在字符范围[\u06F0-\u06F9]中的单个字符

这与此字符串中的表达式不匹配:

[\u06F0-\u06F9]

或者这个字符串:

How can I validate ۱۱۳۹۱/۰۹/۰۹ string with Regex
-------------------^5Numbers, not matched

但仍会匹配此字符串中的日期表达式:

How can I validate ۱۱۳۹۱/۰۹/۰۹۹ string with Regex
------------------------------^Three numbers, not matched

如果你想避免这种情况,即只是将日期表达式与之前和之后的空格(和换行符)匹配,请使用以下正则表达式:

How can I validate۱۳۹۱/۰۹/۰۹string with Regex  
------------------^---------^ No whitespaces above ^, the expression is matched though

希望这有帮助。