javascript - 从特定组中获取匹配项

标签 javascript regex match

我想验证一个字符串,然后从某些组中获取所有匹配项。

正则表达式:

/^<[A-Za-z0-9]>::=(<[A-Za-z0-9]>)+(\|(<[A-Za-z0-9]>)+)+$/

所以,如果我得到类似 <A>::=<B><A>|<Y><A>|<Z> 的信息是有效的,但如果我得到类似 <A>::=<B>| 的东西是假的。

验证没有问题,问题是我想把里面的文字<>因为我以后需要它。

所以,如果我得到 <exparit>::=<number>|<number><exparit> , 然后我想得到 ["exparit", "number", "number", "exparit"]

我的代码看起来像

Rules = {
  "BNF" : /^<[A-Za-z0-9]>::=(<[A-Za-z0-9]>)+(\|(<[A-Za-z0-9]>)+)+$/
};

var checkBNF = function ( bnf ) {
  if ( Rules.BNF.test( bnf ) ) {
    console.log('ok');
    //How to get the text inside < and > ??
  }
  else {
    console.log('no');
  }
};

我非常感谢任何形式的帮助,例如书籍、链接、示例或此问题的解决方案。

谢谢!

最佳答案

如果我能帮到你一点,这里有一些统计数据:

http://jsfiddle.net/URLhb/1/

var test = "<A>::=<B><A>|<Y><A>|<Z>";

var patt0 = /<([a-zA-Z]*)>/g; //Old and bad version
var patt1 = /[a-zA-Z]+/g;

var testRE = test.match(patt1);



alert(testRE[0]);
alert(testRE[1]);
alert(testRE[2]);
alert(testRE[3]);
alert(testRE[4]);
alert(testRE[5]);

此代码将捕获 < > 内的文本,以及 < 和 > 符号。我正在尝试解决此问题,如果我得到更好的结果,我会更新。

编辑:发现问题:我使用的是 * 而不是 + !它现在完美运行!

关于javascript - 从特定组中获取匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20757385/

相关文章:

电话号码的正则表达式,允许强制 10 位数字和 `+` 、 `()` 、空格字符

c# - 使用正则表达式忽略带有数字的字符串中的日期

php - 如何使用 PHP 检查给定格式的字符串?

sas - 在 SAS 的许多变量中查找匹配的日期和标题

javascript - 从 ajax jsonp 回调获取列表

javascript - 未弹出 html 页面的 onclick 警报

java - 构建助手-maven-插件目标 :regex-property how to access generated property

Python正则表达式捕获单个字符字母

javascript - 如何在 JavaScript 中模拟数据库限制?

javascript - Facebook 登录按钮停止呈现