空格和整数的正则表达式,但没有“双重否定”符号

时间:2017-10-17 21:25:38

标签: java regex

尝试为仅包含数字和单个空格(但在开头和结尾没有空格)的字符串查找正则表达式,例如:

“1 2 3 -4” - >接受

“1 2 3 -4” - >不接受

到目前为止一直在使用它:

^\S+[-?\d ]*\b$

但是仍然接受以下字符串:

“1 2 - 3”由于双重负面和双重空间而不应被接受。

请注意,数字可以是任何整数。

任何帮助?

谢谢

3 个答案:

答案 0 :(得分:2)

代码

^(?:-?\d+ )*(?:-?\d+)+$

说明

  • ^在行首处断言位置
  • (?:-?\d+ )*符合以下任意次数
    • -?\d+匹配零个或一个-字符,后跟一个或多个数字,后跟空格字符
  • (?:-?\d+)+匹配零个或一个-字符,后跟一个或多个数字
  • $断言行尾的位置

答案 1 :(得分:1)

这将有效:

^-?\d+(?:[ ]-?\d+)*$

请注意

  • +量词仅适用于\d表达式。
  • 为了清楚起见,我将所需的单空格分隔符放入字符类中;它可以在没有
  • 的情况下等效表达
  • 如果您打算使用Matcher.matches()来匹配单行字符串,那么锚点并不是必需的。

答案 2 :(得分:0)

试试这个:

git stash - will save your changes then
git checkout branch_name - checkout other branch
git stash apply - will apply your saved changes

甚至更好:

^\S+( (-?)[\d]+)+\b$

为了匹配单个数字

编辑(见评论):

这应该是一个更好的版本(删除前导\ S)

^\S+( ((-?)\d+))+\b$|^\d$