正则表达式:要么只有数字或字母数字带' - '和'_'允许但不带数字' - '和' - '

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式:要么只有数字或字母数字带' - '和'_'允许但不带数字' - '和' - '相关的知识,希望对你有一定的参考价值。

我遇到麻烦模式匹配,我试图生成模式,可以接受只有数字或字母数字与'-'和'_'允许但不是数字与'-'和'-'允许,只有'-'和'_ '不应该被允许。

我试过下面的一个有点工作但完全正常工作。

^[a-zA-Z0-9][a-zA-Z0-9-_]+$

我试图匹配以下情况:

abcd = OK
as123 = Ok
as_as = Ok
as_12 = Ok
as-as = ok
12as = Ok
12_1as = Ok
123_12 = not Ok
12-12 = not Ok
1234 = ok
-- = not ok
__ = not ok

提前致谢

答案

这样做的工作:

var test = [
    'abcd',
    'as123',
    'as_as',
    'as_12',
    'as-as',
    '12as',
    '12_1as',
    '123_12',
    '12-12',
    '1234',
    '--',
    '__',
];
console.log(test.map(function (a) {
  return a+' : '+/^(?!d+[-_]d+$)[a-z0-9]+[-_]?[a-z0-9]+$/i.test(a);
}));
另一答案

您正在寻找这样的正则表达式,它可以从负面的前瞻中受益:

^(?!d*(?:[-_]+d*)*$)[w-]+$

Live demo

以上是关于正则表达式:要么只有数字或字母数字带' - '和'_'允许但不带数字' - '和' - '的主要内容,如果未能解决你的问题,请参考以下文章

用于字母数字通配符搜索的正则表达式

js正则表达式,只能出现字母和数字,而且必须出现一个字母或数字

js验证只能输入字母,数字或字母数字组合正则表达式

求js验证字母数字的正则表达式,且是字母开头的

将字母和数字匹配在一起或仅匹配字母的正则表达式

6到20位数字和字母组合 正则表达式