最近项目里有个前端判断输入文本格式的需求,需要判断输入的文本是否符合以下格式:
js写一个正则,可以匹配以下几种情况 |
其实之前用 gpt 一直没有找到好的方式,感觉跟自己的描述有很大关系,今天这样子用类似程序的语言,反而能更好的理解需求。不过最终还是没有匹配纯文本的情况,感觉好像这种情况也不用匹配哈。
为了匹配您所描述的几种情况,我们需要构建一个正则表达式,它能够覆盖所有这些情况。我们需要注意的是:
- 纯文本可以是任意字符,但不能包含方括号或斜杠(以避免与其他模式混淆)。
[aaa]
结构必须包含 3 到 15 个字符,且字符不能是方括号。a[aaa]
结构中,a
可以是任意字符(除了方括号和斜杠),后面跟着[aaa]
结构。a[aaa]/[aaa]
和[aaa]/[aaa]
结构,其中的a
和[aaa]
定义同上,且[aaa]
可以重复出现,每次出现都用斜杠分隔。
考虑到这些要求,我们可以构建以下正则表达式:
function testStructure(str) { |
在这个正则表达式中:
^[^[\]/]*
匹配字符串的开始,并允许有任意数量的非方括号和斜杠字符(即纯文本部分)。(\[[^\[\]]{3,15}\])
匹配一个方括号内的 3 到 15 个非方括号字符(即[aaa]
结构)。(\/\[[^\[\]]{3,15}\])*
匹配零次或多次的/[aaa]
结构。$
表示字符串的结束。
这个正则表达式应该能够匹配您描述的所有情况。