我知道之前已经多次询问过正则表达式问题,但我无法按照自己的需要使其正常工作。我需要的是一个正则表达式,至少包含8个字符,包含至少一个数字(数字可以出现在开头,结尾或其他字符之后),并支持Unicode,因此可以使用希伯来语,阿拉伯语等字符。
答案 0 :(得分:2)
这是基本的正则表达式:
^(?=.*?\d).{8}
^.{8}
将匹配任何至少包含8个字符的字符串。 (?=.*?\d)
会断言那里有一个数字。
至于Unicode支持,这取决于正则表达式引擎。如果支持Unicode,.
应与Unicode字符匹配。如果您想匹配字素,那么您的正则表达式可能会支持\X
,您可以使用.
代替\d
。
如果您想允许非拉丁数字,可能需要将\p{N}
替换为\d
,具体取决于您的正则表达式引擎。
.NET风格的更新:
\p{N}
已匹配Unicode数字,因此您无需使用\X
.
不受支持,因此您必须坚持使用(?>\P{M}\p{M}*)
或使用{{1}}之类的解决方法。答案 1 :(得分:0)
假设您正在使用C#或Java之类的正则表达式,那么您的意思是 字符是unicode类别的字符"字母"您可以 使用方法:
(?=\p{L}*?\p{Nd})[\p{L}\p{Nd}]{8,}