regex - 如果单个字符不止一个则不匹配

标签 regex

我需要创建一个正则表达式来验证任何不带点的文本或任何以 .gt 结尾的文本或 .lt .超过一个点的任何文本也应该是无效的。

anytext // valid
anytext.gt // valid
anytext.lt // valid
anytext.xx // invalid
anytext.xx.gt // invalid

我创建了这个:^.*(\.(gt|lt)|(?<!\..*))$

它工作得很好,除了它接受超过 1 个点,所以类似于 foo.bar.gt。正在验证,不应该。

最佳答案

您可以匹配一个或多个单词字符 \w+ 或在字符类中指定您要匹配的字符并以可选的点结尾,后跟 gt 或 lt:

^\w+(?:\.[gl]t)?$

解释

  • ^ 在行首声明位置
  • \w+ 一个或多个 word characters
  • (?: 非捕获组
    • \.[gl]t 匹配一个点和 gl 后跟 t<
  • )? 关闭非捕获组并使其可选
  • $ 在行尾断言位置

关于regex - 如果单个字符不止一个则不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49822617/

相关文章:

java - 带组的字符串正则表达式

Python:使用正则表达式在GUI中搜索功能需要全局变量,但出现UnboundLocal错误

JavaScript 正则表达式仅创建整个单词的数组。

MYSQL 对每个字母使用多个 CASE REGEXP 作为表行,并且还允许对每个所述 REGEXPied 字母进行重复/重复计算

regex - jMeter RegEx JSON响应

php - 密码 PHP 的正则表达式

php - 如何检查Laravel Hash是否对字符串进行哈希处理?

python - 在 Python 中编写此正则表达式的更好方法

php - 使用 preg_match 在字符串中查找百分比值

java - 我有一个字符串 (( Relationship=11 ) AND ( Relationship=12 ) AND ( Relationship=1 ))