Javascript 正则表达式将字符串转换为有效数字,无小数,符号可选
我想删除小数之后的所有内容,包括小数,以及除第一个字符的连字符以外的所有非数字内容。到目前为止,我有以下内容:Javascript 正则表达式将字符串转换为有效数字,无小数,符号可选,javascript,regex,numbers,sign,Javascript,Regex,Numbers,Sign,我想删除小数之后的所有内容,包括小数,以及除第一个字符的连字符以外的所有非数字内容。到目前为止,我有以下内容:/[^0-9^-]|[^.]+$/。请注意我是如何使用^-阻止删除破折号的,因为我只想删除不是第一个字符(不是符号)的破折号。有什么帮助吗?谢谢 我只是想把它去掉 任何非0-9个字符,第一个字符(如果是破折号,则为负号)除外 小数点后的所有内容,包括小数点 例: 10js-\u 67.09090FD=>1067 -10a.h96=>-10 编辑:没关系,我用了错误的方法,试图匹配不属
/[^0-9^-]|[^.]+$/
。请注意我是如何使用^-
阻止删除破折号的,因为我只想删除不是第一个字符(不是符号)的破折号。有什么帮助吗?谢谢
我只是想把它去掉
- 任何非0-9个字符,第一个字符(如果是破折号,则为负号)除外
- 小数点后的所有内容,包括小数点
10js-\u 67.09090FD
=>1067
-10a.h96
=>-10
编辑:没关系,我用了错误的方法,试图匹配不属于我的字符,我意识到我不应该使用正则表达式。谢谢你的回答,我了解了一些关于regex的知识,也许其他有类似问题的人会发现这一点。试试这个:
Regex numbers = new Regex(@"^(-?\d*)[^0-9]*(\d*)\.",
RegexOptions.ECMAScript | RegexOptions.Multiline);
foreach (Match number in numbers.Matches("10js-_67.09090FD"))
{
Console.WriteLine(
Int32.Parse(
number.Groups[1].Value +
number.Groups[2].Value));
}
或者这个:
Console.WriteLine(
Int32.Parse(
Regex.Replace(
"10js-_67.09090FD",
@"^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$", "$1$2",
RegexOptions.ECMAScript | RegexOptions.Multiline)));
var re = /^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$/
alert(parseInt("10js-_67.09090FD".replace(re, "$1$2"),10));
或者这个:
Console.WriteLine(
Int32.Parse(
Regex.Replace(
"10js-_67.09090FD",
@"^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$", "$1$2",
RegexOptions.ECMAScript | RegexOptions.Multiline)));
var re = /^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$/
alert(parseInt("10js-_67.09090FD".replace(re, "$1$2"),10));
试试这个:
Regex numbers = new Regex(@"^(-?\d*)[^0-9]*(\d*)\.",
RegexOptions.ECMAScript | RegexOptions.Multiline);
foreach (Match number in numbers.Matches("10js-_67.09090FD"))
{
Console.WriteLine(
Int32.Parse(
number.Groups[1].Value +
number.Groups[2].Value));
}
或者这个:
Console.WriteLine(
Int32.Parse(
Regex.Replace(
"10js-_67.09090FD",
@"^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$", "$1$2",
RegexOptions.ECMAScript | RegexOptions.Multiline)));
var re = /^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$/
alert(parseInt("10js-_67.09090FD".replace(re, "$1$2"),10));
或者这个:
Console.WriteLine(
Int32.Parse(
Regex.Replace(
"10js-_67.09090FD",
@"^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$", "$1$2",
RegexOptions.ECMAScript | RegexOptions.Multiline)));
var re = /^(-?\d*)[^0-9]*(\d*)\.([\s\S]*?)$/
alert(parseInt("10js-_67.09090FD".replace(re, "$1$2"),10));
这将是/^(-0-9]+)[^0-9\.]*([0-9]*).$/\1\2/
(用于sed,因为您不告诉我您使用的是什么语言)
然后只打印组1和组2(/\1\2/)
测试:
$:~/Desktop$ echo "10js-_67.09090FD" | sed -r "s/^(-?[0-9]+)[^0-9\.]*([0-9]*).*$/\1\2/"
1067
$:~/Desktop$ echo "-10a.h96" | sed -r "s/^(-?[0-9]+)[^0-9\.]*([0-9]*).*$/\1\2/"
-10
希望这有助于/^(-0-9]+)[^0-9\.]*([0-9]*).$/\1\2/
(用于sed,因为您不会告诉我您使用的是什么语言)
然后只打印组1和组2(/\1\2/)
测试:
$:~/Desktop$ echo "10js-_67.09090FD" | sed -r "s/^(-?[0-9]+)[^0-9\.]*([0-9]*).*$/\1\2/"
1067
$:~/Desktop$ echo "-10a.h96" | sed -r "s/^(-?[0-9]+)[^0-9\.]*([0-9]*).*$/\1\2/"
-10
希望这有帮助我正在使用javascript,并使用str.replace()将字符替换为“”。我正在使用javascript,并使用str.replace()将字符替换为“”。