使用javascript删除不断变化的文本字符串?

时间:2011-08-08 04:52:07

标签: javascript regex dynamic

我有一串文字“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'动态化,而不是像现在那样修复它?

4 个答案:

答案 0 :(得分:3)

var data = "AB-123-2011-07-09";
var field = data.split('-')[1];
document.write("#" + field);

http://jsfiddle.net/efortis/8acDr/

答案 1 :(得分:1)

以下正则表达式可行,但在这种情况下,我认为你根本不需要正则表达式(正如@Eric已经显示的那样)。

"AB-123-2011-07-09".replace(/^AB-(\d+)-.*/, "#$1");

这会产生值#123

http://jsfiddle.net/3XhbE/

答案 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