Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 - Fatal编程技术网

Javascript 用于标识非数字字符串的正则表达式

Javascript 用于标识非数字字符串的正则表达式,javascript,regex,Javascript,Regex,我有一个字符串,如果没有,我想用双引号将非数字括起来。用正则表达式检测非数字的最佳方法是什么 这些是数字:123.4313827。这些是非数字:你好,2011-02-4520A,A23 这是我目前拥有的正则表达式,但没有处理非数字以数字开头的情况,因此2011-02-45不会被拾取 str = str.replace(/(['"])?([a-zA-Z0-9_\-]+)(['"])?:/g, '"$2":'); str = str.replace(/:(['"])?([a-zA-Z_]+[a-zA

我有一个字符串,如果没有,我想用双引号将非数字括起来。用正则表达式检测非数字的最佳方法是什么

这些是数字:123.4313827。这些是非数字:你好,2011-02-4520A,A23

这是我目前拥有的正则表达式,但没有处理非数字以数字开头的情况,因此2011-02-45不会被拾取

str = str.replace(/(['"])?([a-zA-Z0-9_\-]+)(['"])?:/g, '"$2":');
str = str.replace(/:(['"])?([a-zA-Z_]+[a-zA-Z0-9_]*)(['"])?/g, ':"$2"');
这个怎么样:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

摘自:

您可以这样做,这比regexp快得多

str = +str||false;
str=123.4或,非数字时为false

这是将str类型转换为实数,或将其保留为字符串

str = +str||str||false;
要进入下一步,您可以检查输出:

if(typeof(str)=='string'){
    //str is a string
}

我通过阅读另一个问题找到了答案。就是这样: str.replace/[']?[a-zA-Z0-9\-]*[a-zA-Z\-]+[a-zA-Z0-9\-]*[']?/g,$2'


诀窍是确保匹配中有一个非数字。

给定Hello,2011-02-4520A,A23的输入。您希望输出为Hello,2011-02-4520a,A23。?还是我误解了?另外,如果这是正确的,那么Hello会发生什么,2011-02-4520ABC,A23。?也许大家好,2011-02-4520ABC,A23。鉴于此:今天是2011-12-22,2011年的第三天。你会发现:今天是2011年12月22日,2011年的第三天。所以只有数字不会被双引号括起来,这不是正则表达式。我想使用replace将任何非数字包装在字符串中。对不起,如果不清楚的话。@martineau你大错特错了!这是非常有用的!您可以在if语句中使用它,如果它返回FALSE,请像下面这样用引号括起来:if!isNumberx{x=''+x+''.}@Martin:allessioalex说你不需要正则表达式,他完全正确。为什么要让你的代码变得不必要的复杂和不完整——因为他的函数调用涵盖了所有情况?