1

我有输入字符串,如:

"1,7"
"1,2,3, 8,10"
"1, 4,5,7"

我正在尝试编写一个正则表达式来匹配具有以下约束的上述字符串:

  • 它应该只匹配单个数字,并且也在 1-7 的范围内
  • 数字后的逗号是可选的,例如可以有一个字符串“4”,其中 4 应该匹配
  • 一个数字可以用空格作为前缀,但是它应该被忽略

我尝试了以下操作:

 ([1-7]),?

但它匹配后续输入字符串中的连续数字,如“55”,并且在同一字符串中,它也匹配“10”中的“1”,这是不正确的。

 "5,6,7, 55, 8, 10,3"

考虑到上述输入字符串,所需的正则表达式应匹配 5、6、7 和 3。

注意:我使用的是 Ruby 2.2.1

谢谢。

4

1 回答 1

1

您可以尝试以下正则表达式:

(?<=^|,|\b)[1-7](?=$|,|\b)

这意味着一个数字[1-7]必须紧跟在字符串或逗号或单词边界的开头之后(?<=^|,|\b)。这必须紧接在字符串或逗号或单词边界的结尾之前(?=$|,|\b)

于 2015-04-10T22:59:33.950 回答