gpt4 book ai didi

名称的 Javascript 验证正则表达式

转载 作者:数据小太阳 更新时间:2023-10-29 06:14:52 24 4
gpt4 key购买 nike

我希望在我的应用程序中接受带有字母和连字符或破折号的名称,我的代码基于我在此处找到的答案并编码:

function validName(n){
var nameRegex = /^[a-zA-Z\-]+$/;
if(n.match(nameRegex) == null){
return "Wrong";
}
else{
return "Right";
}
}

唯一的问题是它接受连字符作为我不想要的第一个字母(甚至多个)。谢谢

最佳答案

使用negative lookahead assertion以避免匹配以连字符开头的字符串。虽然在字符类末尾提供时不需要在字符类中转义-。使用 - 删除字符类以避免在结束时使用 - 或使用先行断言。

var nameRegex = /^(?!-)[a-zA-Z-]*[a-zA-Z]$/;
// or
var nameRegex = /^(?!-)(?!.*-$)[a-zA-Z-]+$/;

var nameRegex = /^(?!-)[a-zA-Z-]*[a-zA-Z]$/;
// or
var nameRegex1 = /^(?!-)(?!.*-$)[a-zA-Z-]+$/;

function validName(n) {
if (n.match(nameRegex) == null) {
return "Wrong";
} else {
return "Right";
}
}

function validName1(n) {
if (n.match(nameRegex1) == null) {
return "Wrong";
} else {
return "Right";
}
}

console.log(validName('abc'));
console.log(validName('abc-'));
console.log(validName('-abc'));
console.log(validName('-abc-'));
console.log(validName('a-b-c'));

console.log(validName1('abc'));
console.log(validName1('abc-'));
console.log(validName1('-abc'));
console.log(validName1('-abc-'));
console.log(validName1('a-b-c'));

仅供引用:您可以使用 RegExp#test搜索正则表达式匹配的方法,它返回基于正则表达式匹配的 bool 值。

if(nameRegex.test(n)){
return "Right";
}
else{
return "Wrong";
}


更新:如果您只想在单词之间使用单个可选的 -,则使用 0 个或多个以 - 开头的重复组,如 @WiktorStribiżew 回答。

var nameRegex = /^[a-zA-Z]+(?:-[a-zA-Z]+)*$/;

关于名称的 Javascript 验证正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42174375/

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