使用正则表达式验证JavaScript姓氏

时间:2018-07-08 13:46:12

标签: javascript regex

我需要用波兰字母写上姓氏验证。

我写了这样的东西:

"^[A-Z][\u0000-\u007F\u0100-\u017F]+([ |-][A-Z][\u0000-\u007F\u0100-\u017F])*$"

其中:

  • [A-Z]:首字母必须大写
  • [\u0000-\u007F\u0100-\u017F]+:其他字母
  • ([ |-][A-Z][\u0000-\u007F\u0100-\u017F])*:带有"-"或姓氏的可选姓氏第二部分的空间

一切都很好,但是当我输入例如:

"Matt...;'"

我还有一场比赛。如何“切”点.和引号之类的符号?

1 个答案:

答案 0 :(得分:1)

似乎您可以使用

^[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+(?:\s[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+)?\s[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+(?:-[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+)?$

请参见regex demo

它基于所有Polish alphabet letters regex(不包括V / vQ / qX / {{1} }(来自ASCII字母范围),并将与以下名称匹配:

  • 匹配名字
  • 然后可以匹配一个可选的第二名(在空格之后)
  • 一个姓
  • 连字符后的可选姓氏部分。

详细信息

  • x-字符串的开头
  • ^-大写波兰字母和1+小写字母
  • [A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+-出现1或0个空格,然后出现大写的波兰字母,再出现1+个小写字母
  • (?:\s[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+)?-单个空格字符
  • \s-大写波兰字母和1+小写字母
  • [A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+-出现1个或0个连字符,然后出现一个大写的波兰字母,再出现1个以上的小写字母
  • (?:-[A-PR-UWY-ZĄĆĘŁŃÓŚŹŻ][a-pr-uwy-ząćęłńóśźż]+)?-字符串的结尾。

如果您打算在名称中支持$xq,请将v替换为a-pr-uwy-z,将a-z替换为{{ 1}}。