我正在尝试创建一个函数来检查字符串是否包含数字、特殊字符或双空格,但我觉得我的编写方式不正确,而且也没有给出所需的结果。
要求:
<强>1。开头不得有空格。
<强>2。除连字符 (-) 外不允许使用任何特殊字符,并且这已经完成
<强>3。如果字符串中任何地方都有一个空格,则不允许有第二个空格
示例: 宽x深宽
这是不允许的。
这里实际发生的情况是,如果我在字符串后面插入一个空格,则它不允许超过一个空格,但如果我返回字符串之间的某个位置并在那里插入一个空格,那么它就允许该空格。
<强>4。空格之前或之后至少需要有 2 个字母字符。
这是不允许的:
库马尔
请帮帮我。
$('#atul').on('input', function(evt) {
var inputValue = $("#atul").val();
var withoutSpclChar = new RegExp(/^[\w| |_-]+$/);
if (!inputValue.match(withoutSpclChar)) {
var newInputWithHas = $("#atul").val();
var newInputWithoutHas = newInputWithHas.substring(0, newInputWithHas.length - 1);
return $("#atul").val(newInputWithoutHas);
}
if ((inputValue.match(new RegExp(" ", "g")) || []).length > 1) {
var newInputValue = $("#atul").val();
var noDoubleSpace = newInputValue.replace(/ +/g, '');
var NoSpaceinEnd = noDoubleSpace.replace(/ $/, "");
return $("#atul").val(NoSpaceinEnd);
}
if(/\d/.test(inputValue)) {
console.log("it has number");
var noNumber = inputValue.replace(/[0-9]/g, '');
return $("#atul").val(noNumber);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="" id="atul" name="">
最佳答案
编辑:这是您的答案的解决方案: https://jsfiddle.net/6dzf8rw7/1/
$('#atul').on('input', function(evt) {
var inputValue = $("#atul").val();
inputValue = inputValue.replace(/[^a-zA-Z ]/g, "");
$("#atul").val(inputValue);
var withoutSpclChar = new RegExp(/^[\w| |_-]+$/);
if (!inputValue.match(withoutSpclChar)) {
var newInputWithHas = $("#atul").val();
var newInputWithoutHas = newInputWithHas.substring(0, newInputWithHas.length - 1);
return $("#atul").val(newInputWithoutHas);
}
if (inputValue.match(/\s+/g)) {
$("#atul").val(spaceHandle(inputValue))
}
if ((inputValue.match(new RegExp(" ", "g")) || []).length > 1) {
console.log();
$("#atul").val(spaceHandle(inputValue))
var newInputValue = $("#atul").val();
var noDoubleSpace = newInputValue.replace(/ +/g, '');
var NoSpaceinEnd = noDoubleSpace.replace(/ $/, "");
return $("#atul").val(NoSpaceinEnd);
}
if(/\d/.test(inputValue)) {
console.log("it has number");
var noNumber = inputValue.replace(/[0-9]/g, '');
return $("#atul").val(noNumber);
}
});
function spaceHandle(s) {
console.log(s);
var replaced = s.split(' ');
console.log(replaced);
var final_string = '';
$.each(replaced,function(index,value){
if(index === 0 && value.length > 1){
final_string = final_string+value+' ';
}else{
final_string = final_string+value;
}
})
console.log(final_string);
return final_string;
}
关于javascript - 正则表达式:只有 1 个空格但不在开头,没有数字/特殊字符,空格之前或之后的任何字符串都需要至少有 2 个字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105806/