如何使用正则表达式验证۱۳۹۱/۰۹/۰۹字符串?
我希望每个斜杠的长度都是精确的{4}/{2}/{2}
Unicode范围为[\u06F0-\u06F9]。
我在长度检查方面遇到了问题。
如何使用正则表达式验证۱۳۹۱/۰۹/۰۹字符串?
我希望每个斜杠的长度都是精确的{4}/{2}/{2}
Unicode范围为[\u06F0-\u06F9]。
我在长度检查方面遇到了问题。
"^[\u06F0-\u06F9]{4}/[\u06F0-\u06F9]{2}/[\u06F0-\u06F9]{2}$"
^
让匹配从字符串的开头开始,以及使用 $
让匹配在字符串的结尾结束。如果没有这些改变,那么包含你的表达式但更长的字符串也会被视为匹配结果。这个正则表达式应该适用于你:
"(^|[^\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}|$)
希望这对您有所帮助。