javascript - 在 Javascript 中使用正则表达式检查模式

标签 javascript regex

我正在尝试使用正则表达式检查字符串中的模式。 我的要求是

  1. 字符串应始终以 % 或 (
  2. 紧接着%之后应该有一个数字,反之亦然,任何数字前面都应该有%
  3. 字符串只能包含以下字符和单词 % ( ) and or数值

有效字符串(%1 和 %2 或 %3)

无效 %%1

我尝试了以下方法

regex ^[%(]+[%0-9]+[(]

请帮忙

最佳答案

这应该可以做到:

^(?:\(|%[0-9]+)(?:\s+|%[0-9]+|and|or|\(|\))*$

以左括号或百分比开头,然后是一系列数字,然后允许空格或百分比后跟一系列数字任意次数。如果你给出一个更具体的例子来说明你想要匹配的内容,我可以更具体

enter image description here

这不会强制匹配括号。你需要一个递归 js 函数来实现

编辑

好吧,这是一个更具体的函数,用于考虑分隔符周围的间距和数字

^(?:\(|%[0-9])(?:\sand\s|\sor\s|\(+)(?:(?:%[0-9]|\)+)(?:\s(?:and|or)\s(?:%[0-9]|(?:\(\s?)+))?)*\s?\)*$

这将匹配如下内容:%3 和 %4 或(%2 或 %3) 但在以下位置尝试时失败:%3 和 %4 或(%2 或 %3) 请注意 %4 和 或 之间缺少的空格

同样,括号不需要关闭,因此它匹配:%3 和 %4 或 ( %2 或 %3 并且它还匹配:%3 和 %4 或 (%2 或 %3))))

它可以处理立即嵌套的括号,如下所示:%3 和 %4 或 ((%2 或 %3) 和 %9 )

我确定我漏掉了一些案例,请告诉我您遇到了什么问题

关于javascript - 在 Javascript 中使用正则表达式检查模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403036/

相关文章:

javascript - 正则表达式允许 < 和 >

regex - Postgresql regexp_replace 负向前瞻不起作用

java - 代码的正则表达式

javascript - Karma 无法加载 webpack

javascript - 带有参数和innerHTML的事件监听器只能工作一次

javascript - Bootstrap - 折叠菜单不起作用

c++ - xcode 和 c++ 正则表达式?

javascript - 将事件添加到 Polymer 中的子菜单标题

javascript - 处理可选参数的 Node 模块

regex - 比较一个文件是正则表达式文件