Java 不带非字母数字字符行的正则表达式
我希望正则表达式与以下字符串匹配: Discover-现金返还奖金和Citi TYP® 所有非字母数字字符,如Java 不带非字母数字字符行的正则表达式,java,regex,Java,Regex,我希望正则表达式与以下字符串匹配: Discover-现金返还奖金和Citi TYP® 所有非字母数字字符,如-、&和>>,不能一个接一个地出现 试过这个:^[A-Za-z0-9]+[-]*[A-Za-z0-9]+[&]*[A-Za-z0-9]+[®]*[A-Za-z0-9]+$ 试过这个:^[A-Za-z0-9]+[-]*[A-Za-z0-9]+[&]*[A-Za-z0-9]+[®]*[A-Za-z0-9]+$ 这不匹配,因为尾随的[A-Za-z0-9]+$要求在行尾有一个[A-Za-z0-9
-
、&
和>>
,不能一个接一个地出现
试过这个:^[A-Za-z0-9]+[-]*[A-Za-z0-9]+[&]*[A-Za-z0-9]+[®]*[A-Za-z0-9]+$
试过这个:^[A-Za-z0-9]+[-]*[A-Za-z0-9]+[&]*[A-Za-z0-9]+[®]*[A-Za-z0-9]+$
这不匹配,因为尾随的[A-Za-z0-9]+$
要求在行尾有一个[A-Za-z0-9]
字符,而字符串以®
结尾
要匹配除空格外没有非字母数字字符的行,可以使用正则表达式:
^.?([A-Za-z0-9 ]++.?)*$
这基本上是
-一系列字母数字字符或空格,后跟[A-Za-z0-9]++
-最多多一个字符?
-上述情况发生任意次数(…)*
前导的
^.?
允许在字符串开头添加一个额外字符。重要的是要使用++
以避免。@CarlosHeuberger*
不匹配每个字符串,因为它不匹配字符(默认情况下)。所有非字母数字字符。。。不能一个接一个出现。然后拒绝任何包含[^A-Za-z0-9]{2,}
的内容。但是请注意,“&”
也是一个无效的序列。@shmosel您可以编写整个正则表达式吗?这就是整个正则表达式。它只匹配-和&