现在我正在使用多个if条件来通过名称和通配符(*)来验证搜索输入。因为我有多个' if'内心的'如果'语句我试图使用正则表达式来验证我的输入。我想在前端和后端都使用这个表达式。 感谢是否有人可以提供帮助。
验证规则如下
一些有效的输入是:
- hopkins, johns
- h, j
- ho*, jp*
- *ins, johns
- *op*, john*
一些无效输入是:
- hopkins johns
- h*, johns
- hop**, joh*
- h*pk*n*
如果正则表达式不复杂,我们可以认为这是有效的,否则可以将其视为无效
- ho*in*, jo*
简而言之,通用名称格式是
[*]XX[*], [*]XX[*]
where [] ==> Optional
X ==> A-Z, a-z
XX ==> length 2 or more if wild card used
答案 0 :(得分:0)
您可以使用此正则表达式
\*?[a-zA-Z]{2,}\*?, \*?[a-zA-Z]{2,}\*?
在使用上述正则表达式进行验证之前,只需执行类似*
与正则表达式/\*/g
的匹配的操作,并确保其长度介于0到2之间。
答案 1 :(得分:0)
在@Amit_Joki回答的帮助下,我编写了以下代码并且工作正常。
var nameArray = [...];
var re = /\*?[a-zA-Z]{2,}\*?, \*?[a-zA-Z]{2,}\*?/;
for (var i = 0; i < nameArray.length; i++) {
if(nameArray[i].indexOf(',') < 0 ||
(nameArray[i].indexOf('*') >= 0 && !re.test(nameArray[i]))) {
console.log(nameArray[i] + ": Invalid");
} else {
console.log(nameArray[i] + ": Valid");
}
}