各位,帮忙写个正则吧?

必须包括,字母,数字,下划线,长度20个字符以内

阅读 9k
18 个回答

可以在 any-rule 上面找对应的正则,然后改一改就好了。
比如说 /^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/ 这一项,对应的要求是: 微信号(wx),6至20位,以字母开头,字母,数字,减号,下划线
所以稍作修改就可以了 /^[_a-zA-Z0-9]{1,20}$/

VSC有对应的插件,也是叫 any-rule


当然如果你有 Github Copilot (免费2个月) 或者是使用的 Cursor(免费)的话,直接用告诉AI然后让他们帮你写就好了。

/^[a-zA-Z0-9_]{1,20}$/
这个正则表达式的含义是:

^:匹配字符串的开头。
[a-zA-Z0-9_]:表示匹配任何字母、数字或下划线。
{1,20}:表示匹配前面的字符集(字母、数字、下划线)至少1次,最多20次。
$:匹配字符串的结尾。
这个正则表达式可以用于验证字符串是否符合包含字母、数字、下划线且长度不超过20个字符的要求。

^[a-zA-Z0-9_]{1,20}$

/^[a-zA-Z0-9_]{1,20}$/

/^(?=.*[a-zA-Z])(?=.*\d)(?=.*_).{1,20}$/

/^[a-zA-Z0-9_]{1,20}$/

/^(?![\d_]+$)(?![a-zA-Z_]+$)(?![a-zA-Z\d]+$)[a-zA-Z\d_]{3,20}$/

/^(?=[^a-zA-Z]*[a-zA-Z])(?=\D*\d)(?=[^_]*_$)[a-zA-Z\d_]{3,20}$/

遇到不会的正则,直接问ChatGPT

image.png

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[_])[\da-zA-Z_]{1,20}$/

\w可以用于匹配数字/字母/下划线,如果需要全匹配使用/^\w{1,20}$/, 非全匹配使用/\w{1,20}/

Q: 帮我写一个正则,条件是:必须包括字母、数字和下划线三种类型,且长度在20个字符以内。
A:

/^(?=.*[a-zA-Z])(?=.*\d)(?=.*_)[a-zA-Z0-9_]{1,20}$/

该正则表达式包含了以下内容:

^:匹配字符串的开头。
(?=.*[a-zA-Z]):使用正则表达式的“正向预查”语法,表示字符串中必须包含至少一个字母。
(?=.*\d):使用正则表达式的“正向预查”语法,表示字符串中必须包含至少一个数字。
(?=.*_):使用正则表达式的“正向预查”语法,表示字符串中必须包含至少一个下划线。
[a-zA-Z0-9_]{1,20}:匹配字母、数字和下划线,出现 1 到 20 次。
$:匹配字符串的结尾。
综上所述,该正则表达式匹配长度在 1 到 20 个字符之间,且必须包含字母、数字和下划线三种类型的字符串。

/([^]*\w+[^]*){1,20}/

/^[a-zA-Z0-9_]{1,20}$/

这是 chatgpt 的答案

const str = "abc123_";
const regex = /^[a-zA-Z0-9_]{1,20}$/;

if (regex.test(str)) {
console.log("字符串符合要求");
} else {
console.log("字符串不符合要求");
}

正则表达式如下:

^(?=.*[A-Za-z])(?=.*\d)(?=.*[_])\S{1,20}$

解释:

  • ^:开始标记
  • (?=.*[A-Za-z]):至少一个字母
  • (?=.*\d):至少一个数字
  • (?=.*[_]):至少一个下划线
  • \S{1,20}:其他非空白字符,长度在1到20之间
  • $:结束标记

注意:这个正则表达式要求输入必须包含至少一个字母,一个数字和一个下划线,并且总长度在1到20个字符之间。

const regex = /^(?=.*[A-Za-z])(?=.*\d)(?=.*_)[A-Za-z\d_]{1,20}$/;

const isValid = regex.test(str);
新手上路,请多包涵

首先要明确你这里的必须是指什么?

  1. 是指整个字符中 至少含有字母和数字以及下划线(三者同时至少各有1个),如果是,则对应正则是 /^(?=.*[a-zA-Z])(?=.*\d)(?=.*_).{3,20}$/
    说明:里面每一个(?=) 都是测试是否存在一种字符,因为至少需要3个字符,所以后面加了数量限定是{3,20}
  2. 如果仅仅是需要测试存在上述3者之一,则为 /^(?=.*[_a-zA-Z0-9]).{1,20}$/
    说明:这里同时测试是否存在3者之一,因为最少只需要1个字符,所以数量限定不同了。
  3. 如果仅仅允许这3种字符出现,则为 /^[_a-zA-Z0-9]{1,20}$/
推荐问题
宣传栏