正则表达式,允许在一个字符或单词后只留下一个空格

时间:2013-08-05 18:23:17

标签: jquery regex

这是我到目前为止所做的,

$('.name').keyup(function () {
    var $th = $(this);
    $th.val($th.val().replace(/[^a-zA-Z' ]+( [A-Za-z' ]+)*$/g, function (str) {
        return '';
    }));
});

上面的表达式允许我输入A-Z和'和空格。但是我想要一个字符或单词只有一个空格。

Ex. Hello World is ok
but Hello  World should not be accepted.

JSFIDDLE

5 个答案:

答案 0 :(得分:3)

一种简单的方法可能会更好。只需用一个空格替换重复的空格:

.replace(/\s+/, ' ')

答案 1 :(得分:1)

或者,您可以简单地替换重复的空格:

str.replace(/[ ]{2,}/, ' ');

答案 2 :(得分:0)

在你最内部的代码部分,尝试用“replace(/ [^ a-zA-Z”替换“replace(/ [^ a-zA-Z'] +([A-Za-z'] +)” '] +([A-Za-z'] +)“

我从这篇帖子中得到了这个提示:Regular expression to allow single space after character or word所以你可能也想读这个。

答案 3 :(得分:0)

试试这个:

$('.name').keyup(function() {
    var $th = $(this);
    $th.val($th.val().replace(/(\s{2,})|[^a-zA-Z']/g, ' '));
    $th.val($th.val().replace(/^\s*/, ''));
    });

Fiddle

答案 4 :(得分:0)

您只需要取出括号末尾的空格。

[^a-zA-Z']+( [A-Za-z']+)

虽然我会考虑将空格放在第一个单词的末尾,这样你就可以实时输入。

$('.name').keyup(function() {
        var $th = $(this);
        $th.val( $th.val().replace(/([^a-zA-Z'] )+([A-Za-z']+)*$/g, function(str) {  return ''; } ) );
    });