javascript - 正则表达式中允许使用(破折号)和(数字)非英语字符

标签 javascript jquery regex

这个jSFiddle示例仅接受阿拉伯字符,如果您输入英文字符甚至数字/破折号,则会出现警报

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

例如:

  • 阿拉伯语----字符[正确]

  • arabic7777chars [正确]

  • arabicchars---- [不正确]

  • 77777arabicchars [不正确]

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

HTML 代码:

<div class="search-bar">
    <input type="text" class="name">
    <input type="submit" value="submit">

JS 代码:

$(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;
}

jSFiddle

最佳答案

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

   $(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;
}

关于javascript - 正则表达式中允许使用(破折号)和(数字)非英语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544855/

相关文章:

javascript - 如何将 Html 表更改为链接

javascript - 如何制作具有多个系列启用器/禁用器的人力车传奇?

javascript - jquery tablesorter 类 sticky-false

javascript - 如何使用两个 'onclick'事件

javascript - 如何使用jquery获取li号

javascript - React 和 jQuery 插件

php - jquery 电子邮件表单 submitHandler 的问题

Python:附加两个正则表达式

regex - 查找被引号包围的单词 perl

python - 正则表达式,选择最接近的匹配项