Javascript 允许(破折号)&;非英语字符的正则表达式中的(数字)

Javascript 允许(破折号)&;非英语字符的正则表达式中的(数字),javascript,jquery,regex,Javascript,Jquery,Regex,此示例仅接受阿拉伯字符,如果您输入英文字符或偶数/破折号,则会发出警报 1-我需要让它接受数字和破折号 2-如果数字或破折号位于输入值之间,则接受该数字或破折号;如果数字或破折号位于输入值的开头或结尾,则拒绝该数字或破折号 例如: 阿拉伯语----chars[正确] 阿拉比C7777字符[正确] 阿拉伯文----[不正确] 77777阿拉伯卡[不正确] 至少我需要它来接受数字和破折号,提前谢谢 HTML 代码: <div class="search-bar">

此示例仅接受阿拉伯字符,如果您输入英文字符或偶数/破折号,则会发出警报

1-我需要让它接受数字和破折号
2-如果数字或破折号位于输入值之间,则接受该数字或破折号;如果数字或破折号位于输入值的开头或结尾,则拒绝该数字或破折号

例如:

  • 阿拉伯语----chars[正确]

  • 阿拉比C7777字符[正确]

  • 阿拉伯文----[不正确]

  • 77777阿拉伯卡[不正确]

至少我需要它来接受数字和破折号,提前谢谢

HTML 代码:

<div class="search-bar">
    <input type="text" class="name">
    <input type="submit" value="submit">
$(document).ready(function(e){
    $('.search-bar').on('change', '.name', function(e) {
        var is_arabic = CheckArabicOnly(this);
    });    
});

function CheckArabicOnly(field) {
var sNewVal = "";
var sFieldVal = field.value;
for(var i = 0; i < sFieldVal.length; i++) {
    var ch = sFieldVal.charAt(i);;
    var c = ch.charCodeAt(0);
    var dash = "-";
    if(c < 1536 || c > 1791) {
        alert("Please Enter AR characters");
        field.value = '';
        return false
    }
    else {
        sNewVal += ch;
    }
}
field.value = sNewVal;

return true;
}

JS 代码:

<div class="search-bar">
    <input type="text" class="name">
    <input type="submit" value="submit">
$(document).ready(function(e){
    $('.search-bar').on('change', '.name', function(e) {
        var is_arabic = CheckArabicOnly(this);
    });    
});

function CheckArabicOnly(field) {
var sNewVal = "";
var sFieldVal = field.value;
for(var i = 0; i < sFieldVal.length; i++) {
    var ch = sFieldVal.charAt(i);;
    var c = ch.charCodeAt(0);
    var dash = "-";
    if(c < 1536 || c > 1791) {
        alert("Please Enter AR characters");
        field.value = '';
        return false
    }
    else {
        sNewVal += ch;
    }
}
field.value = sNewVal;

return true;
}
$(文档).ready(函数(e){
$('.search bar')。on('change','.name',函数(e){
var为阿拉伯=阿拉伯支票(本);
});    
});
功能检查(字段){
var sNewVal=“”;
var sFieldVal=field.value;
对于(变量i=0;i1791){
警报(“请输入AR字符”);
field.value='';
返回错误
}
否则{
sNewVal+=ch;
}
}
field.value=sNewVal;
返回true;
}

这似乎符合您的要求

^([\u0600-\u06FF]+)(\d*|-*)([\u0600-\u06FF]+)$

它只允许破折号或数字,如果要匹配“-7-7-”,请将中间部分替换为
[\d-]*

^([\u0600-\u06FF]+)([\d-]*)([\u0600-\u06FF]+)$

另一个解决方案类似于以下内容:

   $(document).ready(function(e){
    $('.search-bar').on('change', '.name', function(e) {
        var is_arabic = CheckArabicOnly(this);
    });    
});
     function CheckArabicOnly(field) {
    var sNewVal = "";
    var sFieldVal = field.value;
    //If the string starts or ends with dashes or digits, this will match and the function will exit. The middle section will check to see if there are more than two consecutive dashes in the string.
         var reg = new RegExp("(^(\d|-))|(-{2,})|((\d|-)$)");
    if(reg.test(sFieldVal))
    {
       alert("Invalid");
       return false;
    }
    for(var i = 0; i < sFieldVal.length; i++) {
        var ch = sFieldVal.charAt(i);
        var c = ch.charCodeAt(0);        
        var dash = "-";  
        //45 is the value obtained when a digit is used, so we add it to the list of exceptions.     
        if((c != 45) && (c < 1536 || c > 1791)) {
            alert("Please Enter AR characters");
            field.value = '';
            return false
        }
        else {
            sNewVal += ch;
        }
    }
    field.value = sNewVal;

    return true;
}
$(文档).ready(函数(e){
$('.search bar')。on('change','.name',函数(e){
var为阿拉伯=阿拉伯支票(本);
});    
});
功能检查(字段){
var sNewVal=“”;
var sFieldVal=field.value;
//如果字符串以破折号或数字开头或结尾,这将匹配,函数将退出。中间部分将检查字符串中是否有两个以上的连续破折号。
var reg=new RegExp((^(\d|-)|({2,})|((\d|-)$));
if(注册测试(sFieldVal))
{
警报(“无效”);
返回false;
}
对于(变量i=0;i1791)){
警报(“请输入AR字符”);
field.value='';
返回错误
}
否则{
sNewVal+=ch;
}
}
field.value=sNewVal;
返回true;
}

谢谢,工作很有魅力!你能不能更新它以防止连续的破折号,比如(name--name)。@IbrahimAboSeada:根据你的评论修改。太棒了!谢谢:)