gpt4 book ai didi

javascript - 检测多个破折号

转载 作者:行者123 更新时间:2023-11-30 12:52:59 26 4
gpt4 key购买 nike

我正在尝试通过 RegExp 使用以下规则验证用户名:

  1. 避免前后破折号
  2. 避免使用多个破折号
  3. 更新:它应该只允许 [a-z0-9-]还有。

所以用户名像 -username , username-user---name它们应该都是无效的,而像 user-name 这样的用户名或 my-user-name仍应被识别为有效的用户名。

目前我正在通过两个 RegExp 这样做:jsFiddle

var a = new RegExp("^([^-][a-z0-9][a-z0-9-]+[a-z0-9][^-])$", "i");
var b = new RegExp("-[-]+", "i");
var username = "some-one";

if ( a.test(username) && !b.test(username) ) {
alert(username.match(a)[1]);
} else {
alert('error');
}

上面的代码工作得很好,但是我想知道是否有任何方法可以将这两个 RegExp 合二为一。原因既不是性能也不是更干净的代码。我只是想提高我的正则表达式技能,因为我在过去几天尝试了我所知道的一切,但没有成功。

更新

其实这个^([^-][a-z0-9][a-z0-9-]+[a-z0-9][^-])$应该是这个 ^([a-z0-9][a-z0-9-]+[a-z0-9])$ .我不知道为什么我把它们放在那里! jsFiddle

最佳答案

http://jsfiddle.net/Vv7ma/1/ 上查看

var a = new RegExp("(^-|[-]{2}|-$)", "i");
var username = "some-one";

if (! a.test(username)) {
alert(username);
} else {
alert('error');
}

如果'-'在前面,报错。

如果'-'结尾,错误。

如果 '-' 连续超过两个,则出错。

关于 http://jsfiddle.net/Vv7ma/3/ 的最终答案实现(它也应该只允许 [a-z0-9-]。)

var a = new RegExp("^([a-z0-9]+-)+[a-z0-9]+$", "i");
var username = "some-one";

if (a.test(username)) {
alert(username);
} else {
alert('error');
}

关于javascript - 检测多个破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300048/

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