0

我正在尝试制作一个正则表达式来验证此模式:

这是一个文本
[TEXT][SINGLE SPACE][TEXT][SINGLE SPACE][TEXT][SINGLE SPACE][TEXT] 个人姓名
William Smith
[TEXT][SINGLE SPACE][TEXT]
另一个文本 [TEXT][SINGLE空格][文本][单个空格]

该模式将包含以下规则:

  • 不以任何空格开头
  • 字符串可以在单词之间只包含一个空格,也可以在字符串末尾包含一个空格

我有这个正则表达式

/^[[A-Za-z0-9]+\s?[A-Za-z0-9]*]{0,10}$/

但我不知道如何重复模式并使其长度为 10

** 编辑 **

为了更容易理解,我正在开发一个 jQuery 插件,它将按键事件绑定到输入文本元素,然后添加一个表达式来验证每个按键按下的文本,就像一个蒙面的文本框,所以要应用规则对于只接受字母数字字符和单词之间的空格的掩码,我需要表达式验证每个按下的键,如下所示

T
Th
This
This
This I
This is
This is
This is a
This is a
This is at
This is a te
This is a tex
这是一个文本

4

2 回答 2

2

好的,我我已经正确理解了要求。

首先,这匹配一个单词,后跟一个空格:

/[a-zA-Z01-9]+ /

然后我们需要重复 10 次,对吗?从头开始?

/^([a-zA-Z01-9]+ ){10}/

但是尾随空格是可选的,是吗?

/^([a-zA-Z01-9]+ ){9}[a-zA-Z01-9]+ ?$/

此外,使用它可能会更好,\w而不是[a-zA-Z01-9]. 1并且\s会匹配任何空格,这可能比只匹配空格更好。

如果您的意思是最多10 次,那应该是{0,9}而不是{9}.

1 \w将匹配下划线以及各种国际字母,而您的原始模式不会。不确定这是否是故意的,所以我没有使用它,但如果它不是故意的,那么这\w是一个更好的选择。

于 2012-08-01T19:53:32.577 回答
1

使用(with ()) 而不是字符类分隔符 ( ) 对最多重复十次[]的表达式进行分组:

^\w+(\s\w+){0,9}\s?$
于 2012-08-01T19:53:30.317 回答