我需要一些帮助来改进我的代码:
我是正则表达式系统的初学者。
我想在脚本中编写下面的NUMBER并将其存储在字符串或数组中,以便输出" NUMBER1 ,NUMBER1_NUMBER2_,NUMBER2"我不明白为什么,我最后想要jsut NUMBER;
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);
}
}
答案 0 :(得分:0)
我为你写了这个小例子。希望这对你有所帮助。
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。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec
因此。如果正则表达式匹配,则返回的数组将包含 来自位于零索引([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.
}