c# - 正则表达式匹配由点分隔的单个单词或仅允许星号
问题描述
我需要一个正则表达式,它只允许一个星号或一个由点分隔的作品,最后一个星号。例如:
test.test = OK
test.test* = OK
* = OK
. = NO
_ = NO
test.* = NO
test.test = OK
test.test2 = OK
test* = OK
te*st = NO
test*.test = NO
这是我到目前为止所做的
^[a-z0-9*.\-_\.:]+$
允许的非字符是点和一个星号 允许的字符是小写
解决方案
所以你想要:
- 1 个星号或
- 一个点分隔的单词序列,只有最后一个可以跟一个星号
^((\*)|([a-zA-Z0-9]+)(\.[a-zA-Z0-9]+)*\*?)$
请注意,这[a-zA-Z0-9]+
应该适应你作为一个词的真正意思。在我的回答中,它只是一个或多个字母数字字符。
推荐阅读
- python - 将 PDF 文件转换为 HTML 的最佳方法
- android - 如何在类方法中执行 Room 请求?
- java - 使用按钮更改jsp中的变量值
- excel - 从 DataGridView 获取数据(数据取自 excel)并在 vb.net 图表上显示
- javascript - 如何使用 img.src 构造渲染函数
- javascript - 如何根据随机播放的视频在 html 中显示文本?
- javascript - 如何正确地将两个部分放在另一个之下?
- python - 试图将浮点数转换为小数
- java - 如何在 Java 的方法中使用构造函数参数?
- entity-framework - EF Code First 将外键插入/更新限制为给定的 ReferenceType