3

如何使用正则表达式验证1391/00/00字符串

我希望每个单独斜杠的长度与 {4}/{2}/{2} 完全相同

Unicode 范围是[\u06F0-\u06F9]

我有长度检查的问题。

4

2 回答 2

5

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

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

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

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

于 2012-08-25T08:27:32.587 回答
1

这个正则表达式应该适合你:

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

在以下两个条件下匹配日期表达式:

  • 条件1:它应该在字符串开头不在字符范围内的单个字符之后[\u06F0-\u06F9]

  • 条件2:它应该在字符串末尾不在字符范围内的单个字符之前[\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

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

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

希望这会有所帮助。

于 2012-08-25T09:30:18.787 回答