我正在尝试开发一个正则表达式,以匹配以下公式:
(Price+10%+100+200)
(Price+20%+200)
(Price+30%)
(Price+100)
(Price-10%-100-200)
(Price-20%-200)
(Price-30%)
(Price-100)目前为止我的判断力是..。
/([(])+([P])+([r])+([i])+([c])+([e])+([+]|[-]){1}([\d])+([+]|[-])?([\d])+([%])?([)])/g.但它只符合以下方程:
(Price+100+10%)
(Price+100+100)
(Price+200)
(Price-100-10%)
(Price-100-100)
(Price-200)有人能帮助我理解如何使我的模式与所提供的全套方程式相匹配吗?
注:括号和“价格”是模式必须匹配的公式中的必须项。
发布于 2015-01-05 05:09:43
试试这个,它匹配问题中提供的所有输入字符串:
/\(Price([+-]\d+%?){1,3}\)/g您可以在大提琴中测试它。
要注意的事情:
([P])不提供任何值)附近的括号。[打开,用]关闭)用于可以在模式中某个位置匹配的多个字符(例如,[+-])。单一可能的字符类(例如[P])同样不提供任何值。(中的[(]与等效的\( ),但是要仅仅转义regex特殊字符(即字面上的匹配),最好不要使用字符类,而只是转义它们(例如\() --除非多个字符应该在模式中的某个位置匹配(根据前面要注意的点)。{1} (几乎)总是无用的:删除它。+的意思是“一个或多个”,您可能知道。但是,在您使用它的一系列情况下(即([(])+([P])+([r])+([i])+([c])+([e])+),它将匹配我怀疑的许多值(例如((((((PPPrriiiicccceeeeee):基本上,不要过度使用它。停下来考虑一下,您是否真的想匹配+在模式中应用的一个或多个字符(类)或组。Price )的文字字符串,只需在模式中的适当位置使用文字字符串,例如,在\(Price中的Price。发布于 2015-01-05 05:11:47
/\(Price[+-](\d)+(%)?([+-]\d+%?)?([+-]\d+%?)?\)/g
关于http://www.regexr.com/的工作
发布于 2015-01-05 04:50:02
/^[(Price]+\d+\d+([%]|[)])&/i你自己冒险吧!
https://stackoverflow.com/questions/27773559
复制相似问题