gpt4 book ai didi

javascript - RegEx 在某些情况下不起作用

转载 作者:行者123 更新时间:2023-11-30 21:10:05 25 4
gpt4 key购买 nike

我必须验证我的项目中的名称字段,并为其设置不同的验证条件。

起始名称:

  1. 分钟。 2 个字符的长度。
  2. 可以是字母字符、空格和连字符。
  3. 第一个字符必须是字母。
  4. 空格和连字符不能相邻

我的正则表达式:-

function fname(value){
var fn = new RegExp("([a-zA-Z]{1}[a-zA-Z]*[ -]{0,1}[a-zA-Z])+([ -]{0,1}[a-zA-Z]+)*");
if(fn.test(value)){
return true;
}
else{
return false;
}
}

姓氏:

  1. 可以是字母字符、空格、连字符和撇号。
  2. 第一个字符必须是字母。
  3. 空格、连字符和撇号不得相邻。
  4. 1 个字符仅当该字符为 O 时才可接受

我的正则表达式:

function fname(value){
var ln = new RegExp("([a-zA-Z]+([a-zA-Z]|([ '][a-zA-Z])|([-][a-zA-Z])){1,}|[O]{1})");
if(ln.test(value)){
return true;
}
else{
return false;
}
}

这两个正则表达式在接受时都失败了:

  1. 字母数字字符正逐渐被接受,而本不应如此。
  2. 空格、相邻的连字符(如果是起始名称)和相邻的空格、连字符和撇号(如果是姓氏)在字符串中的任何位置。

最佳答案

虽然这可以通过单个正则表达式来完成,但最简单的解决方案是将测试分开:

function is_valid_first_name(str) {
return (
str.length >= 2 &&
/^[a-zA-Z \-]*$/.test(str) &&
/^[a-zA-Z]/.test(str) &&
!/[ \-]{2}/.test(str)
);
}

function is_valid_last_name(str) {
return (
/^[a-zA-Z \-']*$/.test(str) &&
/^[a-zA-Z]/.test(str) &&
!/[ \-']{2}/.test(str) &&
(str.length > 1 || str === 'O')
);
}

关于javascript - RegEx 在某些情况下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com