正则表达式匹配所有字符串,字符串介于两者之间,并且不匹配字符串

时间:2017-11-05 07:58:36

标签: regex string url-routing pcre

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

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

  1. 匹配所有字符串
  2. 将字符串与点之间的点匹配,如android包名:com.test.package
  3. 不匹配中间带短划线的字符串,如:test-health
  4. 我已经尝试过这个规则它匹配除了像字符串之类的android包名之外的所有内容。这是规则:

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

    PS:我在Regex的网址路由中使用此Yii2 Framework,其内部处理^$作为正则表达式字符串的开头和结尾,所以我有省略那些。

1 个答案:

答案 0 :(得分:1)

您在构建角色类时犯了一个错误,其中添加了+。我假设您正在尝试应用量词,但它在字符类中不起作用。 [.+]?表示句点或文字+或根本不表示。

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

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