问答

这个JavaScript正则表达式如何编写,求大佬赐教

作者:admin 2021-09-12 我要评论

不允许使用表情符,请使用符合要求的 UTF-8 字符、 "/" 用于分割路径,可快速创建子目录,但不要以 "/" 或 "\" 开头,不要出现连续的 "/" 允许出现名为 ".." 的...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

不允许使用表情符,请使用符合要求的 UTF-8 字符、 "/" 用于分割路径,可快速创建子目录,但不要以 "/" 或 "\" 开头,不要出现连续的 "/" 允许出现名为 ".." 的子目录、总长度控制在 1-254 个字符。

###

你的描述不是很严谨,给点例子就清晰了。你看这些例子对不对,不对我再改改。

方法:白盒测试-单元测试(尽可能多的例子遍历每条规则,正确错误的例子都需要)
代码:浏览器-F12 键-粘贴到控制台运行(以免初学者不知道,给点提示而已)

const unitTest = (() => {
  // 正则含义:中文(不包含标点),英文数字,或者'..'
  //         可以以'/'结束
  //         多次重复
  const reg = /^(([\u4e00-\u9fa5A-Za-z0-9]+|\.{2})\/?)+$/

  const expList = [
    // 正确
    { value: 'a/', expect: true },
    { value: 'a/ab/abc', expect: true },
    { value: 'a/ab/abc/', expect: true },
    { value: 'a/洛克人/abc', expect: true },
    { value: 'a/../abc', expect: true },
    { value: 'a/ab/../d', expect: true },
    { value: 'a/ab/../../', expect: true },
    // 错误
    { value: '/a/ab/', expect: false },
    { value: 'a/ab/?/d', expect: false },
    { value: 'a//ab', expect: false },
    { value: 'a/ab/.../d', expect: false },
  ]

  expList.forEach(item => {
    const { value, expect } = item
    const res = reg.test(value)
    console.log(`pass: ${res === expect ? '??' : '?'}, expect:${expect} value: ${value}`)
  })
})()

至于总长度,正则有「重复类」的功能,但是没有「检测字符长度」的功能。你可以在下一步判断 length 小于 254(不需要判断大于 1)。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 这个JavaScript正则表达式如何编写,求

    这个JavaScript正则表达式如何编写,求

  • 关于git proxy的问题

    关于git proxy的问题

  • idea图片问题

    idea图片问题

  • babel -V显示6.26而@babel/cli是7.8.4

    babel -V显示6.26而@babel/cli是7.8.4

腾讯云代理商
海外云服务器