请教一个正则表达式的写法?

内容比较简单,要求只能输入:字母数字和下划线,且开头和结尾不能为数字和下划线

之前写了一个正则:/^[a-zA-Z][0-9a-zA-Z_]*[a-zA-Z]$/

对于长度大于2的,可以使用,但是长度为1的字母校验就不通过了。。单个字母也是符合输入要求的

现在卡在这了,有没有更好的正则写法呢,小白求助!!

阅读 3.3k
5 个回答
/^(?!.*[\d_]$)[a-zA-Z]\w*$/
/^(?!.*[\d_]$)[a-z]\w*$/i

你加一个*就可以了,/^[a-zA-Z]*[0-9a-zA-Z_]*[a-zA-Z]*$/

/^([a-z]{1,2})|([a-z][a-z0-9_]*[a-z])$/i

不会写骚的,那么就写点简单的咯

image.png

[
    '',
    '#',
    '$%',
    'a',
    'ab',
    'a1b',
    'a1',
    '11',
    '131',
    '13a',
].map(v=>[/^([a-z]{1,2})|([a-z][a-z0-9_]*[a-z])$/i.test(v),v])

/^(?![0-9_])\w*?[a-zA-Z]$/

/^([a-z]+)[\w|\d]*([a-z]+)$/i

//以英文开头,中间任意,同样以英文结尾
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题