0

我有以下正则表达式:

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

这应该允许:

+[字符][数字]=[全部]

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

我似乎无法做到这一点。如何构建这样的 RegEx。

编辑:

以下是有效示例:

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

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

无效=空格

4

3 回答 3

2
  1. \w代表“单词字符”,通常[A-Za-z0-9_]你不需要\d在你的类中添加。
  2. ...不允许出现空白字符,除非有数字或单词字符。

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

于 2013-04-23T21:01:55.617 回答
2

以下正则表达式应该适合您:

^(\\+)(\\w+)(=)(\\s*\\S+\\s*)+$
于 2013-04-23T21:23:11.293 回答
1

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

这与您的第一部分匹配,但关键在 . 之后的部分=。它需要至少一个非空格后跟任何内容(允许在非空格的初始匹配后使用空格),因此+word123= testing会在+word123=testing 123通过的地方失败。如果第一个字符。之后=是空格,是不允许的。如果第一个字符。不是空格,它应该在事后允许空格和其他任何东西。

如果您需要更改 之后的初始单词/数字/等之后的=内容,您只需在 a 中插入一组更复杂的规则来()代替.in (\S+.*)

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

于 2013-04-23T20:48:13.977 回答