任何有关正则表达式的专家,可能会找到这个数据的模式,我正在寻找一个完全匹配的,直到空格,逗号和短划线的模式。以下是我需要匹配的示例数据:
单词,字母数字-PRT-word-number
单词,字母数字-PRT-number
-word:任何大小的单词
- 字母数字:3个字母和最多2个数字,因此XXX#或XXX ##
- 数字:最多3位数,所以#或##或###
-PRT:这里唯一的静态值
注意:除了空格,逗号和短划线之外,没有其他标点符号。
到目前为止有一些接近它的东西,但相当笨拙,并没有涵盖所有基础,我在这里建立它:http://buildregex.com/使用他们的逻辑,它有点工作:
/(?:[^_\ ]+)(?:\ )(?:[^_\ ]+), (?:[^_\ ]+)-PRT-(?:[^_\ ]*)/gi
如果有任何可以帮助改进这一点,那将是受欢迎的
https://regex101.com/r/8cc52u/2
非常感谢
答案 0 :(得分:1)
以下是一种方法:
/^[a-z]+\s[a-z]+,\s[a-z]{3}\d{1,2}-prt-([a-z]+-){0,1}\d{1,3}$/gi
^
:行首[a-z]+
:一个或多个字母\s
:任何空格字符[a-z]+
:一个或多个字母,
:,\s
:任何空格字符[a-z]{3}
:三个字母\d{1,2}
:一位或两位数字-prt-
: - prt - ([a-z]+-){0,1}
:一个或多个字母后跟 - ,零或一次\d{1,3}
:一位,两位或三位$
:行尾示例:https://regex101.com/r/BhS8kM/5
/^[a-z]+ [a-z]+, [a-z]{3}\d{1,2}-prt-([a-z]+-)?\d{1,3}$/gi