Javascript正则表达式-将字符串转换为数字

Javascript正则表达式-将字符串转换为数字,javascript,regex,Javascript,Regex,我有一个字符串,我想删除任何字母和连字符。我有下面这样的代码 var s = '-9d 4h 3m', t = '1-22'; var p = /[^0-9-]+/g; r = s.replace(p, ''), a = t.replace(p, ''); console.log(r, a); 在这里,我想删除连字符,如果它是在数字之间,并在第一次省略。有什么帮助或建议吗 在控制台日志中,您在变量之间加了一个逗号,但您需要这样一个加号。 我还更改了变量a,以便它删除

我有一个字符串,我想删除任何字母和连字符。我有下面这样的代码

var s = '-9d 4h 3m',
    t = '1-22';

var p = /[^0-9-]+/g;
    r = s.replace(p, ''),
    a = t.replace(p, '');

console.log(r, a);
在这里,我想删除连字符,如果它是在数字之间,并在第一次省略。有什么帮助或建议吗


在控制台日志中,您在变量之间加了一个逗号,但您需要这样一个加号。 我还更改了变量a,以便它删除-

var s = '-9d 4h 3m';
var t = '1-22';

var p = /[^0-9-]+/g;
var r = s.replace(p, '');
var a = t.replace("-", '');

console.log(r + " " + a);

在控制台日志中,在变量之间加一个逗号,但需要像这样加一个加号。 我还更改了变量a,以便它删除-

var s = '-9d 4h 3m';
var t = '1-22';

var p = /[^0-9-]+/g;
var r = s.replace(p, '');
var a = t.replace("-", '');

console.log(r + " " + a);
检查这里,这将是一个解决方案

var s = '-9d 4h 3m',
s = s.replace(/\D/g,'');
检查这里,这将是一个解决方案

var s = '-9d 4h 3m',
s = s.replace(/\D/g,'');

您可以使用以下正则表达式:

var p = /[^0-9-]+|(?:(?!^)-)/g;

请参见,您可以使用以下正则表达式:

var p = /[^0-9-]+|(?:(?!^)-)/g;

无需使用
|
运算符,请参见更简单的操作

string.replace(/(?!^-)\D/g, "")

更简单的方法,不使用
|
操作符

string.replace(/(?!^-)\D/g, "")

所以基本上你期待的是
-943122
?@adeneo,没错!你是对的。你也要删除尾随的hypens,或者只是“在”数字之间?@adeneo,尾随的hypens,而不仅仅是介于两者之间的一个。@aravindtrue你的问题对我来说完全不清楚。所以基本上你期待的是
-943122
?@adeneo,没错!你是对的。你想同时删除尾随的hypens,或者只是“在”数字之间?@adeneo,尾随的hypens,而不仅仅是介于两者之间的一个。@aravindtrue你的问题对我来说完全不清楚。天哪,我只是没能将这两个正则表达式组合起来。@AvinashRaj发生了……)我认为/[^0-9-]+|((?!^)-)/g就足够了,即非俘虏?:是冗余的,我只是没能将这两个正则表达式组合起来。@AvinashRaj恰巧我认为/[^0-9-]+|((?!^)-)/g就足够了,即非俘虏?:是多余的,我只是想用
\D
替换+1:PI刚想到用
\D
替换+1:P