0

我想创建以下正则表达式:

* [ * , * ] *

在哪里*可以是任何大小的任何文本我已经尝试了以下内容:

/[*.,.*]/

但事实并非如此(如果重要的话,我将需要它用于 JavaScript)

正确文本的示例:

  • 测试[1,2]
  • 测试[3,测试2]

任何人都可以帮忙吗?

4

5 回答 5

2

尝试这个:

[^\[]*\[[^\]]*\]
^----^ anything but [
      ^^ - [
        ^----^ - anything but ]
              ^^ - ]

或者,您可以将整个正则表达式包装在^其中并$仅匹配整个字符串。

例子:

> /^[^\[]*\[[^\]]*\]$/.test("test[1,2]")
true
> /^[^\[]*\[[^\]]*\]$/.test("test[1,test2]")
true
> /^[^\[]*\[[^\]]*\]$/.test("test_wrong")
false
> /^[^\[]*\[[^\]]*\]$/.test("test[wrong")
false
于 2013-07-11T08:15:40.500 回答
1
/\[[^,]*,[^]]*\]/
 --               opening bracket
   ----           non-comma
       -             any number of them
        -         comma
         ----     non-closing-bracket
             -       any number of them
              --  closing bracket
于 2013-07-11T08:18:26.443 回答
0
/^.*\[.*,.*\].*$/

// e.g:
"my [awesome, string] of text".match(/^.*\[.*,.*\].*$/)
于 2013-07-11T08:16:09.277 回答
0

试试这个正则表达式:

/\S+\[\S+,\S+\]/

你也想要分组结果吗?

正如所指出的, \S 将匹配任何非空白字符,包括 , 所以这可能更好但更难阅读。

/([\w\d]+\[[\w\d]+,[\w\d]+\])/g

我添加了括号,以便您可以将其与 match 方法一起使用,以获取所有匹配项的列表。

于 2013-07-11T08:16:24.793 回答
0

这是你的正则表达式:

/.*\[.*,.*\].*/

于 2013-07-11T08:17:18.173 回答