JavaScript 中的正则表达式以匹配土耳其语字符

Regular expression in JavaScript to match turkish characters

我正在使用此代码:

var icerik = $(this).val();
var kelime = /#(\w+)/ig;
var isim = icerik.match(kelime);

我正在做 ajax 过程,例如:#bursa 正在工作,但 #büşra 没有工作,它没有在 b 之后发布。

https://jsfiddle.net/6mo9cyv5/

我能做什么?

只需删除标志g

var kelime = /#(\w+)/i;

console.log( kelime.test('#bursa') );
console.log( kelime.test('#büşra') );

The "g" flag indicates that the regular expression should be tested against all possible matches in a string.

表示在第一次匹配后,会在找到的地方保存一个"cursor"。因此,如果您尝试匹配另一个字符串,它将从 "cursor" 点开始。去掉g标志,每次都会从头开始。

--

编辑:

使用这个:https://jsfiddle.net/afqm9uaa/

var kelime = /#[^\d]+/i;
$('#gonderi').on('input',function(){
    var icerik = $(this).val();
    var isim = icerik.match(kelime);
    var deger = "isim="+isim;

    if(isim && isim.length > 0) {
        $('#sonuc').html(isim[0]);  
    }
});

模式是选择\w+(单词字符)根据:http://www.w3schools.com/jsref/jsref_regexp_wordchar.asp

A word character is a character from a-z, A-Z, 0-9, including the _ (underscore) character.

所以 bursa 匹配,但 büşra 不匹配。因此,我将其更改为 [^\d] "anything but numbers"。如果你想要数字,你可以只使用:

var kelime = /#.+/i;

. 表示 "anything".

--

如果你想得到#字符后面的单词,你应该使用:

var result = icerik.substr(1); //Extracts # character

在那种情况下,我会将您的代码简化为:https://jsfiddle.net/5wo6w3ev/2/

var kelime = /#.+/i;
$('#gonderi').on('input',function(){
    var icerik = $(this).val();
    if (kelime.test(icerik)) {
        var word = icerik.substr(1);

        $('#sonuc').html( word );  
    }
});