正则匹配所有字符串,中间有点的字符串,不匹配中间有破折号的字符串

Regex to match all strings, strings with dots in between, and does not match strings with dash in between

我正在尝试为 restful API 创建一个 URL 路由规则。

我需要一个遵循三个简单规则的Regex

  1. 匹配所有字符串
  2. 匹配中间带有点的字符串,如 android 包名称:com.test.package
  3. 不匹配中间带有破折号的字符串,例如:test-health

我试过这条规则,它匹配除 android 包名称以外的所有内容,如字符串。这是规则:

<id:\w+[.+]?>

P.S:我在 Yii2 Framework 的 Url 路由中使用这个 Regex,它处理 ^$ 作为开始和内部正则表达式字符串的结尾,所以我不得不省略它们。

您在构建角色 class 时在添加 + 的地方犯了一个错误。我假设您正在尝试应用量词,但它在字符 class 中不起作用。 [.+]? 表示句点或文字 + 或什么都没有。

因此,如果您删除 + 您的正则表达式就可以正常工作 \w+\.?。但它并不匹配所有连续出现的单词和句点,例如word.word.word 并且您还必须量化整个表达式:(?:\w+\.?)+

最符合您需要的正则表达式是 ^\w+(?:\.\w+)*$