正则匹配所有字符串,中间有点的字符串,不匹配中间有破折号的字符串
Regex to match all strings, strings with dots in between, and does not match strings with dash in between
我正在尝试为 restful API
创建一个 URL 路由规则。
我需要一个遵循三个简单规则的Regex
:
- 匹配所有字符串
- 匹配中间带有点的字符串,如 android 包名称:
com.test.package
- 不匹配中间带有破折号的字符串,例如:
test-health
我试过这条规则,它匹配除 android 包名称以外的所有内容,如字符串。这是规则:
<id:\w+[.+]?>
P.S:我在 Yii2 Framework
的 Url 路由中使用这个 Regex
,它处理 ^
和 $
作为开始和内部正则表达式字符串的结尾,所以我不得不省略它们。
您在构建角色 class 时在添加 +
的地方犯了一个错误。我假设您正在尝试应用量词,但它在字符 class 中不起作用。 [.+]?
表示句点或文字 +
或什么都没有。
因此,如果您删除 +
您的正则表达式就可以正常工作 \w+\.?
。但它并不匹配所有连续出现的单词和句点,例如word.word.word
并且您还必须量化整个表达式:(?:\w+\.?)+
最符合您需要的正则表达式是 ^\w+(?:\.\w+)*$
我正在尝试为 restful API
创建一个 URL 路由规则。
我需要一个遵循三个简单规则的Regex
:
- 匹配所有字符串
- 匹配中间带有点的字符串,如 android 包名称:
com.test.package
- 不匹配中间带有破折号的字符串,例如:
test-health
我试过这条规则,它匹配除 android 包名称以外的所有内容,如字符串。这是规则:
<id:\w+[.+]?>
P.S:我在 Yii2 Framework
的 Url 路由中使用这个 Regex
,它处理 ^
和 $
作为开始和内部正则表达式字符串的结尾,所以我不得不省略它们。
您在构建角色 class 时在添加 +
的地方犯了一个错误。我假设您正在尝试应用量词,但它在字符 class 中不起作用。 [.+]?
表示句点或文字 +
或什么都没有。
因此,如果您删除 +
您的正则表达式就可以正常工作 \w+\.?
。但它并不匹配所有连续出现的单词和句点,例如word.word.word
并且您还必须量化整个表达式:(?:\w+\.?)+
最符合您需要的正则表达式是 ^\w+(?:\.\w+)*$