使用正则表达式和jQuery选择阿拉伯语文本中的模式

时间:2012-10-17 15:27:41

标签: jquery regex replace match arabic

这可能是一个棘手的问题。使用正则表达式,我想在括号中选择阿拉伯数字(可以是1,2或3个阿拉伯数字)以及括号本身:http://jsfiddle.net/QL4Kr/

<span>
    كهيعص ﴿١﴾
</span>
<span>
    وَإِلَيْهِ تُرْ‌جَعُونَ ﴿٢٤٥﴾
</span>​
jQuery(function () {    
    var oldHtml = jQuery('span').html();
    var newHtml = oldHtml.replace("","");
    jQuery('span').html(newHtml); });​

1 个答案:

答案 0 :(得分:2)

以下是我提出的建议:

jQuery(function() {

    /* Arabic digits representation in Unicode
       See: http://stackoverflow.com/a/1676590/114029 */
    var myregex = /[\u0660-\u0669]+/;

    $('span').each(function(index) {

        var text = $(this).text();

        var matches = text.match(myregex);

        alert(index + ': ' + $(this).text());

        alert(matches);

    });

});

以下是jsFiddle:http://jsfiddle.net/leniel/YyAXP/


这是修改后的版本,只保留每个<span>中的数字:

jQuery(function() {

    var myregex = /[\u0660-\u0669]+/;

    $('span').each(function(index) {

        var text = $(this).text();

        $(this).text('');

        var matches = text.match(myregex);

        $(this).text(matches); 

    });

});

jsFiddle:http://jsfiddle.net/leniel/YyAXP/1/


为了纠正这种误解,这里有一个新版本可以完全按照您的意愿行事:

jQuery(function() {

    var myregex = /[﴾\u0660-\u0669﴿]+/;

    $('span').each(function(index) {

        var text = $(this).text();

        $(this).text('');

        var matches = text.match(myregex);

        var content = text.replace(myregex, '');

        //alert(content);
        //alert(index + ': ' + $(this).text());
        //alert(matches);

        var newSpan = document.createElement('span');

        $(newSpan).text(matches);

        $(this).text(content);

        $(newSpan).prependTo($(this));
    });
});

相应的jsFiddle在这里:http://jsfiddle.net/leniel/YyAXP/2/


我希望这是你最后的要求改变! : - )

var myregex = /([\u0660-\u0669]+)/g;

var parenthesis = /[﴾﴿]+/g;

var text = $("#sentences");

//alert(content);
//var matches = $(text).text().match(myregex);
//alert(text.html());

text.html(function(i, oldHTML) {

    return oldHTML.replace(parenthesis, '').replace(myregex, '<span>$1</span>');
});

这是jsFiddle:http://jsfiddle.net/leniel/G4SkV/4/