【问题标题】: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
提前致谢。
【问题讨论】:
标签:
javascript
regex
validation
【解决方案2】:
锚点必须是必需的。
/^[ls]{2}$/i
如果您不想匹配 ll 或 ss,请尝试此操作
/^(?!(?:ss|ll)$)[ls]{2}$/i
DEMO
【解决方案3】:
i 不区分大小写,g 是全局的:
/(ls)|(sl)/ig
【解决方案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
【解决方案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