C# 至少一位数字,最小长度为8个字符,使用unicode
我知道以前有人问过很多次正则表达式的问题,但我就是不能按照我的需要去做。我需要的是一个正则表达式,至少包含8个字符,至少包含一个数字(数字可以出现在开始、结束或其他字符之后),并支持Unicode,以便可以使用希伯来语、阿拉伯语等字符。以下是基本正则表达式:C# 至少一位数字,最小长度为8个字符,使用unicode,c#,asp.net,regex,C#,Asp.net,Regex,我知道以前有人问过很多次正则表达式的问题,但我就是不能按照我的需要去做。我需要的是一个正则表达式,至少包含8个字符,至少包含一个数字(数字可以出现在开始、结束或其他字符之后),并支持Unicode,以便可以使用希伯来语、阿拉伯语等字符。以下是基本正则表达式: ^(?=.*?\d).{8} ^.{8}将匹配至少包含8个字符的任何字符串(?=.*?\d)将断言其中有一个数字 至于Unicode支持,这取决于正则表达式引擎。如果支持Unicode,应与Unicode字符匹配。如果您想匹配graphe
^(?=.*?\d).{8}
^.{8}
将匹配至少包含8个字符的任何字符串<代码>(?=.*?\d)将断言其中有一个数字
至于Unicode支持,这取决于正则表达式引擎。如果支持Unicode,
应与Unicode字符匹配。如果您想匹配graphemes,您的正则表达式风格可能支持\X
,您可以使用它来代替
如果要允许非拉丁数字,可能需要将\d
替换为\p{N}
,具体取决于正则表达式引擎
更新.NET版本:
已匹配Unicode数字,因此您不需要使用\d
\p{N}
- 不支持
,因此您必须坚持使用\X
或使用类似
的解决方法(?>\P{M}\P{M}*)
(?=\p{L}*?\p{Nd})[\p{L}\p{Nd}]{8,}
Unicode支持随正则表达式的每个实现而变化。你在哪里使用这个表达式?我可以帮忙。您可能需要将10
替换为8,
。我正在使用ASP.NET。但是Lucas和Andie2302的答案似乎很有效。非常感谢Locas,这似乎很有效。好吧,我好像忘了提到如果字符串只包含数字,那么匹配失败,所以8888893应该失败。@ashilon然后在^
之后可以添加(?=.*D)
或(?=.*p{L}
<代码>\D需要非数字,\p{L}
需要字母。完整的正则表达式类似于^(?=.*?\d)(?=.*?\d)。{8}
谢谢你,你的解决方案也可以。似乎对于正则表达式,总是有很多方法可以解决这个问题。再次感谢