我有一串文字“AB-123-2011-07-09”,需要删除“123”以外的所有内容,然后在最终结果中添加“#”符号。
字符串“123”的数量不断增加,“2011-07-09”(日期)也是如此。只有“AB”保持不变。
所以最终的结果是:#123
这可能吗?
感谢。
编辑:为了澄清,我需要一个可以全局搜索网页并替换格式为“AB- xxx -xxxx-的任何文字的脚本” xx-xx“只用粗体突出显示的数字,然后在它前面添加”#“。
目前该位置只有3位数字,但未来可能会有4位数。
我的代码:
function Replace() {
var OldString = "AB-123-2011-07-09";
var NewString = OldString.replace(/^AB-(\d+)-.*/, "#$1");
document.body.innerHTML = document.body.innerHTML.replace(OldString, NewString);
}
window.onload = Replace();
到目前为止,它只替换了1个字符串实例,并使用了固定字符串(“AB-123-2011-07-09”)。
我需要使用什么正则表达式来使'OldString'动态化,而不是像现在那样修复它?
答案 0 :(得分:3)
var data = "AB-123-2011-07-09";
var field = data.split('-')[1];
document.write("#" + field);
答案 1 :(得分:1)
以下正则表达式可行,但在这种情况下,我认为你根本不需要正则表达式(正如@Eric已经显示的那样)。
"AB-123-2011-07-09".replace(/^AB-(\d+)-.*/, "#$1");
这会产生值#123
答案 2 :(得分:0)
这有用吗?
var result = mystring.replace(new RegExp(AB-([0-9]+)-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9], "g"),"#$1");
mystring
是“AB-123-2011-07-09”字符串,result
是“#123”。
答案 3 :(得分:0)
这当然是可能的。这个正则表达式可以解决这个问题:
“AB-123-2011-07-09“.replace(/^AB-(\d+)-\d+-\d+-\d+$/, “#$1“);
它还会检查您给定的语法,并且字符串中没有其他内容。
migg