【问题标题】:Validating initials with regex in JavaScript在 JavaScript 中使用正则表达式验证首字母
【发布时间】:2015-07-26 10:24:47
【问题描述】:

我想在 JavaScript 中使用正则表达式验证我的姓名首字母,该规则应匹配任何字母组合且不区分大小写。

示例(Liza Suki):

var a = "ls"; // valid
var b = "sl"; // valid
var c = "Ls"; // valid
var d = "LS"; // valid
var e = "lS"; // valid
var f = "Sl"; // valid
var g = "SL"; // valid
var h = "sL"; // valid

提前致谢。

【问题讨论】:

  • 你想匹配lsl吗?

标签: javascript regex validation


【解决方案1】:

试试这个('i' 标志的意思是,正则表达式不区分大小写):

/(ls)|(sl)/i

https://regex101.com/r/mT8jW3/2

【讨论】:

  • 这也将匹配“LL”和“SS”
  • 确实如此。我已经解决了。
【解决方案2】:

锚点必须是必需的。

/^[ls]{2}$/i

如果您不想匹配 llss,请尝试此操作

/^(?!(?:ss|ll)$)[ls]{2}$/i

DEMO

【讨论】:

    【解决方案3】:

    i 不区分大小写,g 是全局的:

    /(ls)|(sl)/ig
    

    【讨论】:

    • 你可能想锚定它:/^(sl|ls)$/i.
    【解决方案4】:
    var regex = /(ls)|(sl)/i;
    console.log(regex.test('LS'));
    console.log(regex.test('lS'));
    console.log(regex.test('Ls'));
    console.log(regex.test('sL'));
    console.log(regex.test('ll'));
    console.log(regex.test('SS'));
    

    输出

    true
    true
    true
    true
    false
    false
    

    【讨论】:

    • 这与sl不匹配
    • 好吧...我虽然他的首字母是 LS,而不是 SL
    • 修好了……现在,其他人也修好了
    【解决方案5】:

    这是一个通用函数,它接受名称和输入首字母值,并验证名称是否具有相同的首字母。

    function isValid(name, ils) {
        var m = name.match(/\b[A-Z]/g);
        var re = new RegExp('^' + m.map(function(e){return '(?=.*?' + e + ')';}).join('') +
                  '[' + m.join('') + ']{' + m.length + '}$', 'i');
    
        // Example: re = /^(?=.*?s)(?=.*?l)[sl]{2}$/i
        return re.test(ils);
    }
    

    测试:

    isValid('Liza Suki', 'sl')
    true
    isValid('Liza Suki', 'ss')
    false
    isValid('Liza Suki', 'ls')
    true
    isValid('Liza Suki', 'LS')
    true
    isValid('Liza Suki', 'LL')
    false
    isValid('Liza Suki', 'lsl')
    false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 2012-07-04
      • 1970-01-01
      • 2014-07-30
      • 2020-08-12
      • 1970-01-01
      相关资源
      最近更新 更多