RegEx - 如果只有其他字符,如何允许空白

时间:2013-04-23 20:37:49

标签: java regex

我有以下RegEx:

(\\+)([\\w\\d]+)(=)(.+)

这应该允许:

+ [CharWords] [位数] = [一切]

第二部分(在'='之后)不应该允许空白字符存在,除非有数字或单词字符。

我似乎无法实现这一目标。如何构建这样的RegEx。

编辑:

以下是有效示例:

+Valid123=Valid123
+123Valid=Valid 123
+Valid=This is Valid 14
+Valid=(This is Valid)

我的问题是如何避免这种情况:

无效=空白

3 个答案:

答案 0 :(得分:2)

  1. \w代表“单词字符”,通常为[A-Za-z0-9_],因此您无需在课程中添加\d
  2.   

    ...除非有数字,否则不允许空格字符存在   或者字char。

    尝试这种方式...... = (\\s*\\w+)+, - > \\s*\\w+只会接受zero or more whitespaces at start1 or more characters at end的字符串,例如"a"" ab"" c"(\\s*\\w+)+会使正则表达式接受一个或多个此类令牌。

答案 1 :(得分:2)

以下正则表达式适合您:

^(\\+)(\\w+)(=)(\\s*\\S+\\s*)+$

答案 2 :(得分:1)

试试这个:^\+[\w\d]+=(\S+.*)$

这匹配你的第一件,但关键是在=之后的部分。它需要至少一个NON空格后跟任何东西(在非空格的初始匹配后允许空格),因此+word123= testing将在+word123=testing 123通过的地方失败。如果第一个字符。在=是空格之后,不允许这样做。如果第一个字符。除了空间之外什么都不是,事后应该允许空格和其他任何东西。

如果您需要更改=之后的初始字/数字/等之后的内容,您只需在()中插入一组更复杂的规则来代替{{1}在.

可以看到测试here。您可能需要稍微调整一下(转义java斜线等)。