Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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 - Fatal编程技术网

Javascript 使用正则表达式解析字符串,并将结果存储在数组或字符串中

Javascript 使用正则表达式解析字符串,并将结果存储在数组或字符串中,javascript,regex,Javascript,Regex,我需要一些帮助来改进我的代码: 我是正则表达式系统的初学者 我想在脚本中输入下面的数字,并将其存储在字符串或数组中,直到输出“NUMBER1,NUMBER1\u NUMBER2\u,NUMBER2”的那一刻。我不明白为什么,我希望jsut数字在末尾 function fetchnumber(){ extract = ""; for(picture = 1 ; picture < 5; picture++){ // get background image as a st

我需要一些帮助来改进我的代码:

我是正则表达式系统的初学者

我想在脚本中输入下面的数字,并将其存储在字符串或数组中,直到输出“NUMBER1,NUMBER1\u NUMBER2\u,NUMBER2”的那一刻。我不明白为什么,我希望jsut数字在末尾

function fetchnumber(){
    extract = "";
    for(picture = 1 ; picture < 5; picture++){

 // get background image as a string as this :

 // url('http://www.mywebsite.com/directory/image_NUMBER_.png');

       var NumberOfPicture = document.getElementById(picture).style.backgroundImage ;


       reg = /\_(.*)\_/;
         extract += reg.exec(NumberOfPicture);


       }
     } 
函数fetchnumber(){
摘录=”;
用于(图片=1;图片<5;图片++){
//以字符串形式获取背景图像,如下所示:
//url('http://www.mywebsite.com/directory/image_NUMBER_.png');
var NumberOfPicture=document.getElementById(picture.style.backgroundImage);
reg=/\\\(.*)\\\/;
extract+=reg.exec(NumberOfPicture);
}
} 

我为您编写了这个小示例。希望这对你有帮助

var inputString = 'http://www.mywebsite.com/directory/image_123_.png';
var imageNumber = (/image_([^_]+)_\.\w{3}$/.exec(inputString) || [,false])[1];
// so into imageNumber variable you will have a 123 or false if there is no mach
if (imageNumber) {
   // here you can do something with finded 
   // part of text. 
}
我祝你在执行方面好运

您问为什么会有[1]而不是[0]。原因是我们需要 当正则表达式不匹配时,也会出现相同的行为。这是引用自MDN

exec()方法执行对指定字符串中匹配项的搜索。 返回结果数组,或null

所以。如果正则表达式存在匹配项,则返回的数组将由 从位于零索引([0])且第一个反向引用位于第一个索引[1]的匹配字符串中,反向引用是括号之间的符号(sddsd)。但是如果没有匹配项,我们将传递[,false]作为输出,因此我们将预期结果 进入第一个数组索引[1]。使用不同的输入尝试代码。例如:

var inputString = 'some text some text ';
var imageNumber = (/image_([^_]+)_\.\w{3}$/.exec(inputString) || [,false])[1];
// so into imageNumber variable you will have a 123 or false if there is no mach
if (imageNumber) {
   // here you can do something with finded 
   // part of text. 
}
所以。。在这种情况下,将根本不执行该条件。我的意思是:

if (imageNumber) {
   // here you can do something with finded 
   // part of text. 
}

你现在的成绩如何?有控制台错误吗?首先阅读
RegExp.exec
的文档。它的回报是什么?另外,请确保您的ID确实是1、2、3和4。这很有效,谢谢,但我有一个问题,为什么是[1],而不是[0]?谢谢您的回答。