2013-12-15 46 views
1

已经在这几个小时了,似乎无法得到这个看似简单的正则表达式的工作。我已经成功地排除了单个字符^[^']+$或只是[^'],并成功与所有空间[\\S],但我不知道如何将它们组合在一个单一的表达式。正则表达式除了所有空格和一个特殊字符之外的所有内容

我已经尝试了很多不同的组合:

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

的规则很简单 - 不能是所有的空间,不能包含撇号。有人可以帮我从这里出去吗?

回答

1

我认为这会做的伎俩:

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

是的......像一个魅力工作。我再次想到了解决方案。 –

+2

@ChrisGessler,使用测试代替exec会更有效率。此外,这将错过制表符和其他空白字符。 –

+0

@DanielGimenez - 感谢您的高举。我相信这就是为什么我首先使用\ S的原因。 –

2

如果您需要测试所有的空格或撇号,那么你可以使用以下方法:

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

也许我误解了Chris的这个问题,但我认为它会失败的字符串“克里斯的应用程序”,不是吗?它不会将其标记为无效。 –

+0

啊......真正的数据。不能是所有空格或包含撇号。 –

+0

@ChrisGessler然后可以应用组合的正则表达式。请参阅最新的答案。 – VisioN

1

以下将是如果属实整个弦都是白色的速度,或者有任何撇号的例子。

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

正则表达式具有

  • ^\s+$

    之间的交替:
    • ^:开始字符串
    • \s:白色空间(1次以上)
    • $:结束字符串
  • ':撇号字符

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

+0

迟到了,但是 - 这似乎是共识。 +1提供解释。 –

相关问题