有条件地删除字符串中的数字

时间:2017-08-16 10:57:42

标签: javascript regex

我有两种类型的字符串,如下所示:

78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180

78:27247 PERF create tab state : 1502876879180

我正在寻找一个正则表达式来删除字符串78:24207

开头的数字

生产这样的东西:

PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180

PERF create tab state : 1502876879180

然后如果字符串在:之后只包含第一个数字的两个数字:

PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180

成为:

PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 

我已经为第一个模式尝试了这个replace(/^\d+\.\s*/, '');,但似乎没有用。

和第二个问题replace(\:.*$)的这种模式,但我的字符串中没有任何变化。

任何关于我做错的提示?

5 个答案:

答案 0 :(得分:2)

您可以在一次replace电话中执行此操作:



var s = '78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180'
var r = s.replace(/^\d+:\d+\s*|(:\s*\d+)\s+\d+$/g, '$1')

console.log(r)

s = '78:27303 PERF tab state created : 1502882663195'
var r = s.replace(/^\d+:\d+\s*|(:\s*\d+)\s+\d+$/g, '$1')

console.log(r)




答案 1 :(得分:1)

您可以通过首先匹配然后替换代码片段

来使用它



function matchAndReplace(str){
	str = str.match(/\d+:\d+ ([\w\s.]*)(:\s*\d+)/g)[0];
	console.log(str.replace(/^\d+:\d+ /,''));
}
matchAndReplace("78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180");
matchAndReplace("78:27247 PERF create tab state : 1502876879180");




答案 2 :(得分:1)

对于您需要的第一个模式:

replace(/^\d+:\d+\s+/, '');

对于第二种模式:

replace(/(\s+\d+)\s+\d+$/, '$1');

答案 3 :(得分:1)

你关心这种模式吗?如果没有,你可以用这个替换前9个字符:

Data refined;
    set begin;
    TimeDifference = intck('days', date_var1, date_var2) ;
    if abs(TimeDifference) <=30 delete;
run;

答案 4 :(得分:1)

作为替代选择:不要替换 - 使用

获取想要的内容match
[a-z].*:\s*\d+

它匹配一个字母及其后面的一切冒号,然后是(可选空格和)一个数字。

document.write(
    '78:24207 PERF keytouchListAction ProtocolSelect 04.00 : 1502876877199 1502876879180'
    .match(/[a-z].*:\s*\d+/i)
);