javascript - 正则表达式将字符串转换为有效数字,无小数,符号可选

标签 javascript regex numbers sign

我想删除小数点之后的所有内容(包括小数点),以及除连字符(如果它是第一个字符)之外的所有非数字内容。到目前为止我有这个:/[^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/

相关文章:

python - 在 python 中只保留 int

javascript - 打开时滚动到引导 Accordion 的顶部

javascript - 使用来自后端的 Regexp 进行 Angular 电子邮件验证

ruby - 删除所有非字母数字字符,但保留变音符号(重音符号)和 -(破折号)

REGEX-允许数字和。 -/

AngularJS - 始终在逗号后显示两位数字

javascript - 处理照片和视频的大型网络上传

javascript - Knockout - 从模板内部访问数组 "bound to"的长度

javascript - 如何获取答案的结果并对该结果进行计算

asp.net-mvc - 使用 asp.net mvc 用逗号分隔数字