用于检查全名的regexp
regexp for checking the full name
我想写一个正则表达式来检查用户是否插入了至少两个由一个空格分隔的单词:
示例:
var regexp = new RegExp(/^[a-z,',-]+('s)[a-z,',-]+$/i);
regexp.test("D'avid Camp-Bel"); // true
regexp.test("John ---"); // true // but it should be false!
^[a-z]([-']?[a-z]+)*( [a-z]([-']?[a-z]+)*)+$
适用于您吗?
[a-z]
确保名称总是以字母开头,那么[-']?[a-z]+
允许使用分隔字符,只要它后面至少有另一个字母。*
允许任何数量的这些部件。
后半部分,( [a-z]([-']?[a-z]+)*)
匹配一个空格,后面跟有相同模式的另一个名称。+
确保至少存在一个附加名称,但允许更多名称。(如果只允许两个或三个部分名称,则可以使用{1,2}
。
更简单的版本
/^(['w]{3,})+'s+(['w's]{3,})+$/i
([''w]{3,})名字应该只包含字母,长度为3或更多
+''s名字后面应该跟一个空格
+([''w''s]{3,})+第二个名称只能包含长度为3或以上的字母,后面可以跟其他名称,也可以不跟
/i忽略字母的大小写。可以是大写或小写字母
/^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$/g
这个版本允许使用重音字符,对我来说效果很好!
^([a-zA-Zà-úÀ-Ú]{2,})+'s+([a-zA-Zà-úÀ-Ú's]{2,})+$
此答案还支持unicode字符。
^['p{L}]([-']?['p{L}]+)*( ['p{L}]([-']?['p{L}]+)*)+$
几个要点:
-
在JavaScript中,通常最好使用文字而不是命名构造函数(因此
/pattern/
而不是new RegExp()
。(当然,有时您需要构造函数路由)。 -
如果你确实使用了构造函数,那么在RegExp的情况下,你不需要分隔的正斜杠
-
您当前的模式只匹配第一个单词
-
{1,}
可以用修改器+
写入
尝试
/^([a-z']+(-| )?)+$/i
请注意,姓氏允许使用双筒姓氏。
相关文章:
- RegExp:匹配Javascript中除regex值之外的所有内容
- JavaScript正则表达式文本与RegExp对象
- 使用RegExp查找url中的字符
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 全局标志仅与第一个匹配项匹配的Regexp
- javascript RegExp的奇怪行为:相同的正则表达式会产生不同的结果
- 替换为javascript中的regExp
- Javascript Regexp-不接受空格,但应该接受
- javascript中换行的regexp
- 带有多个修饰符的JavaScript RegExp
- Regexp奇怪地不起作用
- RegExp匹配任意字符串+8位数字
- 使用RegExp获取一系列单词,这些单词前后可能有空格,也可能没有空格
- RegExp-如何匹配尽可能短的金额
- javascript:查找/替换regexp帮助-粗体、斜体和特定字符
- javascript RegExp不't过滤器编号
- 在javascript regexp中捕获多个变量的一种更简单的方法
- Javascript:如何通过Regexp从属性中提取字符串
- javascript regexp,用于验证一开始没有http的url
- 用于检查全名的regexp