Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式将字符串转换为有效数字,无小数,符号可选_Javascript_Regex_Numbers_Sign - Fatal编程技术网

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()将字符替换为“”。