我需要匹配任何至少有一个字符串的字符串。 (点)和*(星)字符而不是<或者> (html标签)。有任何想法吗?感谢。
答案 0 :(得分:4)
我认为以下内容可行,但我不认为正则表达式是解决此问题的最简单方法。
^[^<>]*(\.[^<>]*\*|\*[^<>]*\.)[^<>]*$
答案 1 :(得分:2)
^([^<>.]*\.[^<>*]\*)|([^<>*]*\*[^<>.]\.)[^<>]*$
这类似于Mark Byers提供的答案,但应该更有效率,因为它可以减少回溯。
说明:初始^
字符指定模式适用于整个字符串。然后,字符串可以包含两种模式之一:
<
或>
的字符,
和星号,或<
的字符
或>
,以及一段时间。在满足其中任何一项后,该字符串可以包含任何不是<
或>
的数字(零个或多个)。
答案 2 :(得分:0)
^[^<>]*(\.[^<>]*\*|\*[^<>]*\.)[^<>]*$
要进行进一步的实验,请使用rubular,一个实时正则表达式检查器。
答案 3 :(得分:0)
^ [^<>]* ( \. [^<>]* \* | \* [^<>]* \.) [^<>]* $
(没有空格),但两个正则表达式会更容易。
在Perl中:/^[^<>]*\.[^<>]*$/ and /^[^<>]*\*[^<>]*$/