如何拒绝前导空格和结束空间,并且在JavaScript中的字符之间只允许一个空格?
我尝试了很多模式,这是最后一个:
^[^-\s][a-zA-Z0-9_\s-]*$
但这根本不允许空间。
我正在使用[a-zA-Z0-9_\s-]
,因为我只想允许使用英文字符。
此外,我不能使用修剪或更换。我将keypress绑定到html上的输入字段并检查模式,如果regex.test(e.key)
为false,则禁用该事件。
答案 0 :(得分:2)
如果你想要一个匹配有效输入的正则表达式,而不是像其他答案那样匹配无效输入,那么:
SQL Error(1064): You have an error in your SQL Syntax;
/^\S(?!.* )\S$/
是一个非空间。中间部分是负向前瞻,确保在任何地方都没有两个空格。
答案 1 :(得分:0)
您只是尝试删除前导和尾随空格?尝试类似的东西:
str.match(/^\s+.*\s+$/g,'');
<强> UPD:强>
$(document).ready(function() {
$('input').on('change keyup', function(e) {
var str = $(e.target).val();
var disallowed = str.match(/^\s+.*|.*\s+$/g);
if (disallowed != null) {
$('button').prop('disabled', true);
} else {
$('button').prop('disabled',false);
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text">
<button>add</button>
&#13;
答案 2 :(得分:0)
这会根据您的要求验证给定的字符串:
var wrong = " hello, my dear friend ";
var right = "hello, my dear frind"
function validate(s){
var validateRegEx = new RegExp(/^\s+|\s\s+|\s+$/g);
return !s.match(validateRegEx);
}
console.log("Validation of '" + wrong + "': " + validate(wrong));
console.log("Validation of '" + right + "': " + validate(right));
答案 3 :(得分:0)
/^\s+|\s{2,}|\s+$/g
就是你要找的。另外,它不是e.key
您要验证的内容,而是this.value
。
示例:强>
document.getElementById("test").onkeyup = function() {
var str = this.value;
if (/^\s+|\s{2,}|\s+$/.test(str))
this.className = "not-valid";
else
this.className = "";
}
&#13;
.not-valid{
background-color: #FAA;
}
span{
color: red;
display: none;
}
.not-valid+span{
display: inline;
}
&#13;
<input id="test" /><span> not valid</span>
&#13;