md7*_*md7 5 javascript regex html5
我有以下执行此操作的正则表达式:
pattern='^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d).*$'
Run Code Online (Sandbox Code Playgroud)
不幸的是,不包括德语ä,ö,ü之类的特殊字符,因此类似的模式1234567ä
将失败。有谁知道如何让他们进入这个表情?我猜应该在该(?=.*[a-zA-Z])
部分中。预先感谢您的努力
Dan*_*idy 13
答案完全取决于您想要做什么。
正如您所注意到的,[a-zA-Z]
只匹配没有变音符号的拉丁字母。
如果您只关心德语变音符号和ß连字,那么您可以将该部分替换为[a-zA-ZäöüÄÖÜß]
,例如:
pattern='^.*(?=.{8,})(?=.*[a-zA-ZäöüÄÖÜß])(?=.*\d).*$'
Run Code Online (Sandbox Code Playgroud)
但这可能不是您想要做的。您可能希望将拉丁字母与任何变音符号相匹配,而不仅仅是德语中使用的那些。或者,您可能想匹配任何字母表中的任何字母,而不仅仅是拉丁字母。
其他正则表达式方言有字符类可以帮助您解决此类问题,但不幸的是,JavaScript 的正则表达式方言字符类很少,并且没有一个可以帮助您。
(如果您不知道,“字符类”是一种与属于预定义字符组成员的任何字符相匹配的表达式。例如,\w
是与任何 ASCII 字母、数字或下划线,并且.
是匹配任何字符的字符类。)
这意味着您必须列出与要匹配的字符对应的每个 UTF-16 代码单元范围。
一个快速而肮脏的解决方案可能是说[a-zA-Z\u0080-\uFFFF]
,或者完全:
pattern='^.*(?=.{8,})(?=.*[a-zA-Z\\u0080-\\uFFFF])(?=.*\d).*$'
Run Code Online (Sandbox Code Playgroud)
这将匹配 ASCII 范围内的任何字母,但也会匹配 ASCII 范围之外的任何字符。这包括任何脚本中带有或不带有变音符号的所有可能的字母字符。但是,它还包括许多不是字母的字符。ASCII 范围内的非字母被排除,但包括 ASCII 范围之外的非字母。
上面的内容可能足以满足您的目的,但如果不是,那么您将必须弄清楚您需要哪些字符范围并明确指定这些范围。