首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >匹配变量项方程

匹配变量项方程
EN

Stack Overflow用户
提问于 2015-01-05 04:46:53
回答 3查看 51关注 0票数 1

我正在尝试开发一个正则表达式,以匹配以下公式:

代码语言:javascript
运行
复制
(Price+10%+100+200)
(Price+20%+200)
(Price+30%)
(Price+100)

(Price-10%-100-200)
(Price-20%-200)
(Price-30%)
(Price-100)

目前为止我的判断力是..。

代码语言:javascript
运行
复制
/([(])+([P])+([r])+([i])+([c])+([e])+([+]|[-]){1}([\d])+([+]|[-])?([\d])+([%])?([)])/g

.但它只符合以下方程:

代码语言:javascript
运行
复制
(Price+100+10%)
(Price+100+100)
(Price+200)
(Price-100-10%)
(Price-100-100)
(Price-200)

有人能帮助我理解如何使我的模式与所提供的全套方程式相匹配吗?

注:括号和“价格”是模式必须匹配的公式中的必须项。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-05 05:09:43

试试这个,它匹配问题中提供的所有输入字符串:

代码语言:javascript
运行
复制
/\(Price([+-]\d+%?){1,3}\)/g

您可以在大提琴中测试它。

要注意的事情:

  • 只在要分组的地方使用括号。在单一可能性,固定数量匹配(例如,([P])不提供任何值)附近的括号。
  • 使用字符类(用[打开,用]关闭)用于可以在模式中某个位置匹配的多个字符(例如,[+-])。单一可能的字符类(例如[P])同样不提供任何值。
  • 是的,字符类(通常)隐式转义它们中的regex特殊字符(例如,在字符类之外的(中的[(]与等效的\( ),但是要仅仅转义regex特殊字符(即字面上的匹配),最好不要使用字符类,而只是转义它们(例如\() --除非多个字符应该在模式中的某个位置匹配(根据前面要注意的点)。
  • 量词{1} (几乎)总是无用的:删除它。
  • 量词+的意思是“一个或多个”,您可能知道。但是,在您使用它的一系列情况下(即([(])+([P])+([r])+([i])+([c])+([e])+),它将匹配我怀疑的许多值(例如((((((PPPrriiiicccceeeeee):基本上,不要过度使用它。停下来考虑一下,您是否真的想匹配+在模式中应用的一个或多个字符(类)或组。
  • 要匹配没有任何正则表达式特殊字符(如Price )的文字字符串,只需在模式中的适当位置使用文字字符串,例如,在\(Price中的Price
票数 1
EN

Stack Overflow用户

发布于 2015-01-05 05:11:47

/\(Price[+-](\d)+(%)?([+-]\d+%?)?([+-]\d+%?)?\)/g

关于http://www.regexr.com/的工作

票数 1
EN

Stack Overflow用户

发布于 2015-01-05 04:50:02

代码语言:javascript
运行
复制
/^[(Price]+\d+\d+([%]|[)])&/i

你自己冒险吧!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27773559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档