Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不要在匹配中包含字符串_Javascript_Regex_Match - Fatal编程技术网

Javascript 不要在匹配中包含字符串

Javascript 不要在匹配中包含字符串,javascript,regex,match,Javascript,Regex,Match,我试图在字符串上运行regex,比如 string='值为ij35dss。该值为fsd53fdsfds。“ 在这里,我需要类似于string.match(/值是(.*?)\./g)的内容 要仅返回['ijdss','fsdfdsfds']而不返回['value is ijdss','value is fsdfdsfds'.]请使用以下示例: var string = 'The value is ij35dss. The value is fsd53fdsfds.'; var re = new R

我试图在字符串上运行regex,比如

string='值为ij35dss。该值为fsd53fdsfds。“

在这里,我需要类似于
string.match(/值是(.*?)\./g)的内容
要仅返回
['ijdss','fsdfdsfds']
而不返回
['value is ijdss','value is fsdfdsfds'.]

请使用以下示例:

var string = 'The value is ij35dss. The value is fsd53fdsfds.';
var re = new RegExp(/The value is (.*?)\./g)

var strs = []   
var m = re.exec(string)

while(m != null) {
  strs.push(m[1]);
  m = re.exec(string)
}

alert(strs)
和一个jsFiddle:

如果您认为经常需要,可以将其添加到字符串中。原型:

String.prototype.matchGroup = function(re, group) {
  var m = re.exec(string);
  var strs = [];
  while(m != null) {
    strs.push(m[group]);
    m = re.exec(string);
  }
  return strs;
}

var string = 'The value is ij35dss. The value is fsd53fdsfds.';
alert(string.matchGroup(/The value is (.*?)\./g, 1));
jsFiddle:

学分:

    • 请改用,下面是一个示例:

      var string = 'The value is ij35dss. The value is fsd53fdsfds.';
      var re = new RegExp(/The value is (.*?)\./g)
      
      var strs = []   
      var m = re.exec(string)
      
      while(m != null) {
        strs.push(m[1]);
        m = re.exec(string)
      }
      
      alert(strs)
      
      和一个jsFiddle:

      如果您认为经常需要,可以将其添加到字符串中。原型:

      String.prototype.matchGroup = function(re, group) {
        var m = re.exec(string);
        var strs = [];
        while(m != null) {
          strs.push(m[group]);
          m = re.exec(string);
        }
        return strs;
      }
      
      var string = 'The value is ij35dss. The value is fsd53fdsfds.';
      alert(string.matchGroup(/The value is (.*?)\./g, 1));
      
      jsFiddle:

      学分:


      查看编辑-但是,我不明白为什么您会将其视为“黑客”。这是使用regexps的一种正常方法-匹配,然后循环所有匹配和提取组,对我来说似乎非常干净。@BHare,它不是黑客的,只是写得不好。可以做得更好,比如:我理解它不是“黑客式的”,因为javascript中没有像我使用过的任何其他语言那样的方法来执行正则表达式;这是一个看起来很刻薄的部分。函数matchGroup虽然简单,但并不存在于本机。请参阅编辑-但是,我不明白为什么您会将其视为“黑客”。这是使用regexps的一种正常方法-匹配,然后循环所有匹配和提取组,对我来说似乎非常干净。@BHare,它不是黑客的,只是写得不好。可以做得更好,比如:我理解它不是“黑客式的”,因为javascript中没有像我使用过的任何其他语言那样的方法来执行正则表达式;这是一个看起来很刻薄的部分。函数matchGroup虽然简单,但并不存在于本机。