各位大神,跪求一完美的正则表达式

seesea125 2018-02-05 06:36:06
判断规则:必须以##开头,以##结束,中间包含1-50个中文或英文字符,不允许为空或超长
##...##里面[key:value]是可选的,就是[开头,]结束,并且必须包含:,:前后都要有值

大概样子是

##我是一个标题[id:1][name:李四]##

跪求大神给一完美的正则表达式,谢谢啦
...全文
1088 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
清汤泡饭 2018-02-06
  • 打赏
  • 举报
回复
推荐个网站,自己去学下正则表达式吧。 https://regexper.com
似梦飞花 2018-02-06
  • 打赏
  • 举报
回复

var reg=/^(?=##.{1,50}##$)##[\u4e00-\u9fa5a-z\d]*(\[[a-z\d]+\:[a-z\u4e00-\u9fa5\d]+\])*##/i;

    var arr=[
        '##我是一个标题[id:1][name:李四]##',
        '##我是一个标题##',
        '##我是一个标题[id:1][name:李四]aa##'
    ]
    arr.forEach(function (item) {
        console.log(reg.test(item));
    })
这样?
  • 打赏
  • 举报
回复
你不是要校验吗?怎么变成匹配了。你是怎么测试的,贴出来
seesea125 2018-02-06
  • 打赏
  • 举报
回复
@老鼠 这个表达式匹配不出来结果啊
  • 打赏
  • 举报
回复

/^(?=##.{1,50}##$)##[\u4e00-\u9fa5\w]+(?:\[[^\[\]]+:[^\[\]]+\])*##$/
seesea125 2018-02-06
  • 打赏
  • 举报
回复
@似梦飞花 谢谢楼上,我表达的还是不严谨,是我错了,##我是一个标题[id:1][name:李四]aa[name:李四]##,这种一旦[]开始了,接下来就一定都是[]了,中间就不能再出现aa了 另外能解释下啥意思吗,严重的看不懂啊
似梦飞花 2018-02-05
  • 打赏
  • 举报
回复

var reg=/^(?=##.{1,50}##$)##[\u4e00-\u9fa5a-z\d]*([\u4e00-\u9fa5a-z\d]*\[[a-z\d]+\:[a-z\u4e00-\u9fa5\d]+\])*[a-z\u4e00-\u9fa5\d]*##/i;

    var arr=[
        '##我是一个标题[id:1][name:李四]##',
        '##我是一个标题##',
        '##我是一个标题[id:1][name:李四]aa[name:李四]##',
        '##我是一个标题[id:1][name:李四]aa[name:李四]name:李四]aa[name:李四]##',
        '##我是一个标题[id:1][name:李四]aa[name:李四][name:李四]aa[name]##',
        '我是一个标题[id:1][name:李四]我是一个标题[id:1][name:李四]我是一个标题[id:1][name:李四]我是一个标题[id:1][name:李四]我是一个标题[id:1][name:李四]我是一个标题[id:1][name:李四]'
    ]
    arr.forEach(function (item) {
        console.log(reg.test(item));
    })
试下这样对不

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧