Javascript 使用正则表达式防止前导空格
我试图用(目前)以下正则表达式限制评论发布文本:Javascript 使用正则表达式防止前导空格,javascript,jquery,regex,input,validation,Javascript,Jquery,Regex,Input,Validation,我试图用(目前)以下正则表达式限制评论发布文本: ^([a-zA-Z0-9 _\.\'\"\(\)\!\?\&\@]){1,}$ 但是,文本本身需要包含“”形式的空格,但我不想让第一句有空格,即文章不能有前导空格。例如,(在下面的示例中,我将使用“u”表示“”),表单将允许: 这是一个句子。 但它不允许: (使用“\”表示“”) \u这是一个句子 \u这是一个句子 等等 我试图使用否定,但我对正则表达式的理解还不够透彻,无法掌握如何使用它。整个领域都不适合我,所以希望有人能帮
^([a-zA-Z0-9 _\.\'\"\(\)\!\?\&\@]){1,}$
但是,文本本身需要包含“”形式的空格,但我不想让第一句有空格,即文章不能有前导空格。例如,(在下面的示例中,我将使用“u”表示“”),表单将允许:
这是一个句子。
但它不允许:
(使用“\”表示“”)
\u这是一个句子
\u这是一个句子
等等
我试图使用否定,但我对正则表达式的理解还不够透彻,无法掌握如何使用它。整个领域都不适合我,所以希望有人能帮我。提前谢谢
注:
我在RegEx中需要它,因为我有一个livefeed验证器告诉用户他/她的输入是有效/无效的。另一个允许我实时感知的选项对于我来说就足够了,如果您碰巧想到了更好的方法。如果您只想允许这些字符,并且限制第一个字符不应是空白,则必须重复字符组:
/^[a-zA-Z0-9 _.'"()!?&@][a-zA-Z0-9 _.'"()!?&@\s]+$/
或者你做两个测试:
if(!/^\s/.test(str) && /^[a-zA-Z0-9 _.'"()!?&@]+$/.test(str)) {
// valid
}
您还可以使用:
^(?!\s)([a-zA-Z0-9 .'”()!?&@]){1,}$
只需在正则表达式的开头使用^\S,其中“^”是字符串的开头,而“\S”是空白字符类的求反。+1啊,忘记了向前看…再次;)(无需转义字符组中的字符)。这只阻止了“”的一个实例,我如何扩展它以防止理论上的无限量?@Matt:你是说第一个还是第二个表达式?如果第一个字符不是空白,一切都很好,不是吗?不,我需要在文本之前没有任何空白。这就是为什么我用2来显示上面的示例“空白也不起作用。@马特:我认为你把问题复杂化了。不管开头有多少空白,第一个字符总是一个。因此,只测试第一个字符就足够了。如果不是空白,它是字母,所以没有前导空白。但我实际上不同意。”你是如何运用这个表达的,所以我可能遗漏了什么。