当前位置: 代码迷 >> JavaScript >> 在JavaScript中使用正则表达式验证缩写
  详细解决方案

在JavaScript中使用正则表达式验证缩写

热度:46   发布时间:2023-06-03 17:55:50.0

我想用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

提前致谢。

试试这个(“ i”标志表示,正则表达式不区分大小写):

/(ls)|(sl)/i

锚一定是必需的。

/^[ls]{2}$/i

如果您不想匹配ll或ss请尝试此操作

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

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

/(ls)|(sl)/ig
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

这是一个通用函数,它接受名称并输入缩写名称,并验证名称是否具有相同的缩写。

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