至少一个数字,最少 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,}