从这些问题:javascript regex : only english letters allowed
如何对人名进行表达测试?目前它根本不允许名称之间的空格。我需要能够匹配像 John Doe
这样的东西干杯
答案 0 :(得分:14)
let result = /^[a-zA-Z ]+$/.test( 'John Doe');
console.log(result);
在字符类中抛出所需的任何符号。这是为什么我说具体关于完全您要验证的内容。这个正则表达式不会考虑重音字符,如果你关心你最好用unicode匹配。
答案 1 :(得分:5)
FWIW,我写这个正则表达式来清理名字:
let name = "John Doe";
let result = name.replace(/[^A-Za-z0-9_'-]/gi, '');
console.log(result);
这将让像奥布莱恩,史密斯,史密斯 - 奥布莱恩这样的名字通过,但会阻止像恩格尔这样的“名字”;放弃用户;从被传递。无论如何,这是事实发生后的四年,但希望我的答案有用。
答案 2 :(得分:5)
^\s*([A-Za-z]{1,}([\.,] |[-']| ))+[A-Za-z]+\.?\s*$
与@ Stephen_Wylie的解决方案类似,但更短(更好?)。
答案 3 :(得分:4)
试试这个:
/^(([A-Za-z]+[\-\']?)*([A-Za-z]+)?\s)+([A-Za-z]+[\-\']?)*([A-Za-z]+)?$/
它可以选择[至少1个字母字符后跟一个'或 - ]无限次数。在必需的空格之前必须至少有一个字母字符,以确保我们至少获得名字和姓氏。整个模式被分组以接受无限重复(对于喜欢使用他们所有名字的人,例如John Jacob Jingleheimer Schmidt),但必须至少出现一次,通过中间的+符号。最后,姓氏的处理方式与其他名称相同,但不允许使用尾随空格。 (不幸的是,这意味着我们会稍微违反DRY。)
以下是几个可能的输入结果:
"Jon Doe": true
"Jonathan Taylor Thomas": true
"Julia Louis-Dreyfus": true
"Jean-Paul Sartre": true
"Pat O'Brien": true
"Þór Eldon": false
"Marcus Wells-O'Shaugnessy": true
"Stephen Wells-O'Shaugnessy Marcus": true
"This-Is-A-Crazy-Name Jones": true
"---- --------": false
"'''' ''''''''": false
"'-'- -'-'-'-'": false
"a-'- b'-'-'-'": false
"'-'c -'-'-'-d": false
"e-'f g'-'-'-h": false
"'ij- -klmnop'": false
请注意,它仍然无法处理Unicode字符,但如果需要,可能会扩展为包含这些字符。
答案 4 :(得分:0)
只需添加空格
^[\w ]+$
不确定是否是您的需要。
答案 5 :(得分:0)
以下代码适用于我的情况:
<div class="a box"> </div>
<div class="b box"> </div>
<div class="c box"> </div>
答案 6 :(得分:0)
我认为这是一个简短的方法
c = DriverManager.getConnection("jdbc:sqlite:" + this.dbPath + this.dbName,setConfig().toProperties()) ;
private SQLiteConfig setConfig() {
SQLiteConfig config = new SQLiteConfig();
config.enforceForeignKeys(true);
config.setTempStore(SQLiteConfig.TempStore.MEMORY);
config.setCacheSize(1000);
config.setReadOnly(true);
return config;
}
答案 7 :(得分:0)
试试这个:
在名称中,您可以使用破折号、空格和单引号。
^[ a-zA-Z\-\']+$
还有特殊符号
/^[ a-zA-ZàèìòùÀÈÌÒÙáéíóúýÁÉÍÓÚÝâêîôûÂÊÎÔÛãñõÃÑÕäëïöüÿÄËÏÖÜŸçÇßØøÅåÆæœ'`'\-]+$/