这是我到目前为止所做的,
$('.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.
答案 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*/, ''));
});
答案 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 ''; } ) );
});