至少一个数字,最少 8 个字符长度,使用 unicode
At least one digit, minimum 8 chars length, with unicode
我知道以前曾多次询问过正则表达式问题,但我就是无法按需要使用它。我需要的是一个正则表达式,最少8个字符,至少包含一个数字(数字可以出现在开始、结束或其他字符之后),并支持Unicode,以便可以使用希伯来语、阿拉伯语等字符。
这是基本的正则表达式:
^(?=.*?\d).{8}
^.{8}
将匹配任何至少包含 8 个字符的字符串。 (?=.*?\d)
将断言其中有一个数字。
至于 Unicode 支持,这取决于正则表达式引擎。如果支持 Unicode,.
应该匹配一个 Unicode 字符。如果您想改为匹配字素,您的正则表达式风格可能支持 \X
,您可以使用它来代替 .
。
如果您想允许非拉丁数字,您可能需要将 \d
替换为 \p{N}
,具体取决于您的正则表达式引擎。
.NET 风格的更新:
\d
已经匹配 Unicode 数字,因此您不需要使用 \p{N}
\X
不受支持,因此您必须坚持使用 .
或使用 (?>\P{M}\p{M}*)
. 等解决方法
Assuming you are using a C# or Java like regex flavor, and you mean
with characters a character of the unicode category "letter" you can
use:
(?=\p{L}*?\p{Nd})[\p{L}\p{Nd}]{8,}
我知道以前曾多次询问过正则表达式问题,但我就是无法按需要使用它。我需要的是一个正则表达式,最少8个字符,至少包含一个数字(数字可以出现在开始、结束或其他字符之后),并支持Unicode,以便可以使用希伯来语、阿拉伯语等字符。
这是基本的正则表达式:
^(?=.*?\d).{8}
^.{8}
将匹配任何至少包含 8 个字符的字符串。 (?=.*?\d)
将断言其中有一个数字。
至于 Unicode 支持,这取决于正则表达式引擎。如果支持 Unicode,.
应该匹配一个 Unicode 字符。如果您想改为匹配字素,您的正则表达式风格可能支持 \X
,您可以使用它来代替 .
。
如果您想允许非拉丁数字,您可能需要将 \d
替换为 \p{N}
,具体取决于您的正则表达式引擎。
.NET 风格的更新:
\d
已经匹配 Unicode 数字,因此您不需要使用\p{N}
\X
不受支持,因此您必须坚持使用.
或使用(?>\P{M}\p{M}*)
. 等解决方法
Assuming you are using a C# or Java like regex flavor, and you mean with characters a character of the unicode category "letter" you can use:
(?=\p{L}*?\p{Nd})[\p{L}\p{Nd}]{8,}