如何在单词之间留空格?

时间:2019-01-26 01:46:32

标签: regex

编辑:我一直在尝试,好像是这样:

\(\w{1,12}\s*\)$

有效,但是它只能在单词的末尾留有空格。

示例

比赛

(stuff )
(stuff    )

不是

(st uff)

正则表达式:

\(\w{1,12}\)

这符合以下条件:

(stuff)

但不是:

(stu ff)

我也希望能够匹配空格。

我已经尝试过放置\s了,但是它破坏了整个事情,没有任何匹配的结果。我在这里看到一个帖子,上面说要把整个东西封装在^[]*$中,其中要有空格。那只会使正则表达式匹配所有内容。

这可以帮助Google表单验证。我是regex的新手,所以请放轻松。我查了一下我的问题,但找不到与正则表达式兼容的任何东西。 (是因为括号吗?)

2 个答案:

答案 0 :(得分:1)

如果您试图在括号之间获取12个字符:

\([^\)]{1,12}\)

[^\)]段是一个字符类,代表所有不带括号的字符(^反转了该类)。

如果您想要一些特定的字符,例如字母数字和空格,请将其分组到字符类中:

\([\w ]{1,12}\)

\([\w\s]{1,12}\)

如果您想使用12个单词字符,并且中间需要任意数量的空格:

\(\s*(?:\w\s*){1,12}\)

答案 1 :(得分:1)

要匹配(st uff)(st uff some more)之类的文本,您需要这样编写正则表达式,

\(\w{1,12}(?:\s+\w{1,12})*\)

正则表达式说明:

  • \(-文字起始括号
  • \w{1,12}-根据需要匹配长度为1到12的单词
  • (?:\s+\w{1,12})*-您需要此模式,以便它可以匹配一个或多个空格,后跟一个长度为1到12的单词,并且整个模式可以重复零次或多次。
  • \)-文字右括号

Demo

现在,如果要在开始括号和结束括号之后也选择允许空格,则可以将\s*放在正则表达式中,

\(\s*\w{1,12}(?:\s+\w{1,12})*\s*\)
  ^^^                        ^^^

Demo with optional spaces