JavaScript正则表达式有效名称

use*_*673 3 javascript regex

我想创建一个检查有效名称的JavaScript正则表达式.

  • 最少2个字符(空间不能计算)
  • 空间允许一些特殊的字符(éàëä...)

我知道怎么写一些单独但没有结合.

如果我使用/^([A-Za-z éàë]{2,40})$/,用户可以输入2个空格作为名称

如果我使用/^([A-Za-z]{2,40}[ éàë]{0,40})$/,用户必须先使用2个字母,使用空格或特殊字符后,不能再使用字母.

搜索了一下,但很难为我的问题制定搜索字符串.有任何想法吗?

Tho*_*mas 10

请,请相当,不要这样做.你只会告诉他们他们的名字无效,最终会让人感到不安.将你的方案被拒绝姓氏的几个例子:O'Neill,Sørensen,??????,?.试图涵盖所有这些案件和更多案件注定要失败.

做这样的事情:

  • 剥离前导和尾随空白
  • 将连续的空白折叠成一个空格
  • 检查结果是否为空

在JavaScript中,它看起来像:

name = name.replace(/^\s+/, "").replace(/\s+$/, "").replace(/\s+/, " ");
if (name == "") {
  // show error
} else {
  // valid: maybe put trimmed name back into form
}
Run Code Online (Sandbox Code Playgroud)