Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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 简单正则表达式。从[~21~]获取号码_Javascript_Regex - Fatal编程技术网

Javascript 简单正则表达式。从[~21~]获取号码

Javascript 简单正则表达式。从[~21~]获取号码,javascript,regex,Javascript,Regex,我有一个像这样的字符串:[~21~]。如何使用regex仅返回21?数字可以是任意长度的任意值(数字)。我在这个正则表达式中使用Javascript,所以如果您可以在exsample中包含它,那就太好了 托马斯你可以: 删除除数字以外的任何其他字符 将结果数字解析为实数而不是字符串 比如: 其中: parseInt(…,10)将任何字符串解析为以10为基数的数字 str.replace(…,“”)将删除字符(将其替换为零) [\D]表示:除数字以外的任何内容 比如说, parseInt("[

我有一个像这样的字符串:[~21~]。如何使用regex仅返回21?数字可以是任意长度的任意值(数字)。我在这个正则表达式中使用Javascript,所以如果您可以在exsample中包含它,那就太好了

托马斯你可以:

  • 删除除数字以外的任何其他字符
  • 将结果数字解析为实数而不是字符串
  • 比如:

    其中:

    • parseInt(…,10)
      将任何字符串解析为以10为基数的数字
    • str.replace(…,“”)
      将删除字符(将其替换为零)
    • [\D]
      表示:除数字以外的任何内容
    比如说,

    parseInt("[~21~]".replace(/[\D]/g, ""), 10) === 21;
    

    请注意,它将连接中的数字,例如
    [~21~22~]
    ;这将成为
    2122

    一个简单的正则表达式,它将在您的情况下工作:

    [0-9]+
    

    这将匹配由以下字符组成的字符串序列:0,1,2,3,4,5,6,7,8,9如果您不担心错误处理:

     var getTheNumber = function(a) { return a.substring(0, a.length-2).substring(2); }
    

    考虑负数和/或十进制数。这将提取任意数量的1个或更多数字,而不管字符串是什么。

    您能否提供有关字符串的更多详细信息?例如,它是否总是一个整数?它总是两位数吗?它会是负面的吗?它是否总是被~和[]包围?如果您试图解析除肯定之外的任何内容,则会出现意外行为integers@Robert马丁:你说得对。如果字符串在数字前面包含一个
    -
    ,但在其他地方也包含一个,则会变得很棘手。我不确定输入字符串的确切格式。是的,负数会有问题,十进制数也会有问题(例如,0.2321会比您预期的大得多)。注意:
    [^\d]
    可以缩短为
    \d
    @pimvdb您的意思是
    \d
    而不是
    \S
    ?无效。引用这个问题:“数字可以是任意长度的任意值。”他问了一个正则表达式。“有些人在遇到问题时会想‘我知道,我会使用正则表达式’。现在他们有两个问题。正则表达式不能解决OP实际遇到的任何问题。我不明白正则表达式为什么不能解决它。我一直在使用Perl和正则表达式。他们用最少的代码快速地解决了大多数问题。我的意思是,正则表达式不能解决任何仅仅剪掉前两个字符和后两个字符不能解决的问题。OP实际上并不是在寻找一种模式,他只是想剪掉一些角色。
     var getTheNumber = function(a) { return a.substring(0, a.length-2).substring(2); }
    
    -*\d+(\.\d+)*