Javascript 匹配变量项方程
我试图开发一个正则表达式来匹配以下等式:Javascript 匹配变量项方程,javascript,php,regex,Javascript,Php,Regex,我试图开发一个正则表达式来匹配以下等式: (Price+10%+100+200) (Price+20%+200) (Price+30%) (Price+100) (Price-10%-100-200) (Price-20%-200) (Price-30%) (Price-100) (Price+100+10%) (Price+100+100) (Price+200) (Price-100-10%) (Price-100-100) (Price-200) 到目前为止我的正则表达式是 /([(
(Price+10%+100+200)
(Price+20%+200)
(Price+30%)
(Price+100)
(Price-10%-100-200)
(Price-20%-200)
(Price-30%)
(Price-100)
(Price+100+10%)
(Price+100+100)
(Price+200)
(Price-100-10%)
(Price-100-100)
(Price-200)
到目前为止我的正则表达式是
/([(])+([P])+([r])+([i])+([c])+([e])+([+]|[-]){1}([\d])+([+]|[-])?([\d])+([%])?([)])/g
…,但它仅匹配以下方程式:
(Price+10%+100+200)
(Price+20%+200)
(Price+30%)
(Price+100)
(Price-10%-100-200)
(Price-20%-200)
(Price-30%)
(Price-100)
(Price+100+10%)
(Price+100+100)
(Price+200)
(Price-100-10%)
(Price-100-100)
(Price-200)
有人能帮我理解如何使我的模式与提供的全套方程式相匹配吗
注:括号和“价格”是模式必须匹配的等式中的必输项
/^[(Price]+\d+\d+([%]|[)])&/i
试试看,风险自负 试试这个,它匹配问题中提供的所有输入字符串:
/\(Price([+-]\d+%?){1,3}\)/g
你可以在实验室里测试它
注意事项:
- 仅在要分组的位置使用括号。单个可能性、固定数量匹配(例如,
周围的括号不提供值([P])
- 将字符类(用
打开,用[
关闭)用于可在模式中某个位置匹配的多个字符(例如]
)。单一可能性字符类(例如[+-]
)同样不提供值[P]
- 是的,字符类(通常)隐式转义其中的正则表达式特殊字符(例如
中的[(]
)与等效的
在字符类之外),但要转义正则表达式特殊字符(即字面上匹配它们),最好不要使用字符类而只是转义它们(例如,\(
)–除非模式中的某个位置有多个字符匹配(根据前面要注意的点)\(
- 量词
总是(几乎)无用的:把它丢掉{1}
- 量词
的意思是你可能知道的“一个或多个”。然而,在你使用它的一系列情况下(例如+
),它会匹配许多我怀疑你期望的值(例如基本上,不要过度使用它。停止考虑是否真的要匹配一个或多个字符(类)或在代码中应用了<代码> +/>代码>的组。([(])+([P])+([r])+([i])+([c])+([e])+
- 要匹配没有任何正则表达式特殊字符(如
)的文本字符串,只需在模式中的适当位置使用文本字符串,例如Price
)中的\(Price
Price
/\(价格[+-](\d)+%)?([+-]\d+%?)?([+-]\d+%?)?\)/g
很高兴听到这一点。我在阅读了你开始的模式的基础上增加了一些你想考虑的笔记。非常感谢你,我正准备以我的正则表达式为基础提问。我很高兴读你的笔记。现在我会在制作正则表达式之前牢记在心。