Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,在这几个小时了,似乎不能让这个看似简单的正则表达式工作。我成功地排除了带有^[^']+$的单个字符,或者仅排除了[^']的单个字符,并成功地排除了带有[\\S]的所有空格,但我不知道如何在单个表达式中组合它们 我尝试了多种不同的组合: ^(?=[^'])[\\S]$ [\\S-[']] 规则很简单——不能是所有空格,也不能包含撇号。有人能帮我吗?如果需要测试所有空格或撇号,则可以使用以下选项: if (/'|^\s+$/.test(str)) { // is invalid } 如果

在这几个小时了,似乎不能让这个看似简单的正则表达式工作。我成功地排除了带有
^[^']+$
的单个字符,或者仅排除了
[^']
的单个字符,并成功地排除了带有
[\\S]
的所有空格,但我不知道如何在单个表达式中组合它们

我尝试了多种不同的组合:

^(?=[^'])[\\S]$
[\\S-[']]

规则很简单——不能是所有空格,也不能包含撇号。有人能帮我吗?

如果需要测试所有空格或撇号,则可以使用以下选项:

if (/'|^\s+$/.test(str)) {
    // is invalid
}

如果需要测试所有空格或撇号,则可以使用以下选项:

if (/'|^\s+$/.test(str)) {
    // is invalid
}

我认为这会起作用:

if (/'|^[ ]+$/.exec(str)) {
    // invalid...
}

我认为这会起作用:

if (/'|^[ ]+$/.exec(str)) {
    // invalid...
}

如果整个字符串都是空格,或者有任何撇号实例,则以下内容为真

if (/^\s+$|'/.test(s)) {
    // is invalid
}
正则表达式在

  • ^\s+$
    • ^
      :字符串的开头
    • \s
      :空白(1次或多次)
    • $
      :字符串结尾
  • :撇号字符

如果这两个序列中的任何一个匹配,则该字符串无效。

如果整个字符串为空格,或者存在任何撇号实例,则以下为真

if (/^\s+$|'/.test(s)) {
    // is invalid
}
正则表达式在

  • ^\s+$
    • ^
      :字符串的开头
    • \s
      :空白(1次或多次)
    • $
      :字符串结尾
  • :撇号字符


如果这两个序列中的任何一个匹配,则字符串无效。

可能我误解了Chris的问题,但我认为字符串“Chris's app”会失败,不是吗?它不会将其标记为无效。啊。。。真数据。不能全部为空格或包含撇号。@ChrisGessler则可以应用组合正则表达式。请看更新的答案。@vision,这是我的答案。你只是颠倒了方向alternation@DanielGimenez错。这是我的答案。您的第一个答案
/^\s+$|'/.test()
是错误的。此外,我只是在更新我的答案时才看到你的答案。也许我误解了克里斯的问题,但我认为字符串“克里斯的应用程序”会失败,不是吗?它不会将其标记为无效。啊。。。真数据。不能全部为空格或包含撇号。@ChrisGessler则可以应用组合正则表达式。请看更新的答案。@vision,这是我的答案。你只是颠倒了方向alternation@DanielGimenez错。这是我的答案。您的第一个答案
/^\s+$|'/.test()
是错误的。而且我只有在更新我的答案后才看到你的答案。是的。。。工作得很有魅力。再一次,我仔细考虑了解决方案。@ChrisGessler,使用test而不是exec将更有效。此外,这将丢失制表符和其他空白字符。@DanielGimenez-谢谢提醒。我相信这就是我首先使用\s的原因。@DanielGimenez关于测试方法的看法是正确的。但是关于标签。。。我最初的回答是/'|^\s+$/但后来我注意到在主题中Chris写了“所有空格”,这就是为什么我改变了它…是的。我没有指定“空白”,但我知道了。正是+$和我现在否定的事实起了作用(valid=!re.test(val));是的。。。工作得很有魅力。再一次,我仔细考虑了解决方案。@ChrisGessler,使用test而不是exec将更有效。此外,这将丢失制表符和其他空白字符。@DanielGimenez-谢谢提醒。我相信这就是我首先使用\s的原因。@DanielGimenez关于测试方法的看法是正确的。但是关于标签。。。我最初的回答是/'|^\s+$/但后来我注意到在主题中Chris写了“所有空格”,这就是为什么我改变了它…是的。我没有指定“空白”,但我知道了。正是+$和我现在否定的事实起了作用(valid=!re.test(val));很晚了,但这似乎是共识+很晚了,但是是的,这似乎是共识+1.提供解释。