我想删除小数点之后的所有内容(包括小数点),以及除连字符(如果它是第一个字符)之外的所有非数字内容。到目前为止我有这个:/[^0-9^-]|[^\.]+$/
。请注意我如何阻止使用 ^-
删除破折号,因为不知何故我只想删除不是第一个字符(不是符号)的破折号。有什么帮助吗?谢谢。
我只想将其删除
- 任何非 0-9 字符,第一个字符除外(如果是破折号(负号))
- 小数点之后(包括小数点)的所有内容
例如:
10js-_67.09090FD
=> 1067
-10a.h96
=> -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));
关于javascript - 正则表达式将字符串转换为有效数字,无小数,符号可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611038/