正则表达式并不适用于波斯语

时间:2014-06-13 08:18:59

标签: javascript jquery regex

我正在使用此正则表达式:/می (\S+)/gمی之后得到一个单词,它适用于http://regex101.com/#javascript中的在线测试,但在使用时它不起作用它在javascript本身。

我使用以下代码:

var optimized= $("#text").val().replace('/می (\S+)/g', 'می‌$1');

例如,这个字符串:

من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی

应该替换为这个:

من می‌توانم همه را بکشم، ولی تو نمی‌توانی همه را می‌کشی

它适用于在线正则表达式网站,但不适用于我的代码...... :(

4 个答案:

答案 0 :(得分:3)

您应该删除正则表达式周围的引号('):

var optimized= $("#text").val().replace(/می (\S+)/g, 'می‌$1');

这是一个工作小提琴:http://jsfiddle.net/4Fm6g/

答案 1 :(得分:1)

我测试了这段代码,但它确实有效;

var input = "من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی";
var optimized= input.replace(/می (\S+)/g, 'می‌$1');

console.log(optimized);

唯一的区别是声明正则表达式的方式。

您写道:

.replace('/می (\S+)/g', 'می‌$1');

您需要删除斜杠(并使用正则表达式构造函数)或引号

修改:使用jquery运行示例:http://jsfiddle.net/ghusse/LSpwU/

<textarea id="text">من می توانم همه را بکشم، ولی تو نمی توانی همه را می کشی</textarea>
<textarea id="optimized"></textarea>

<p><button id="go">Go</button></p>

使用Javascript:

var input = $("#text"),
    output = $("#optimized");

$("#go").click(function(){
    output.val(input.val().replace(/می (\S+)/g, 'می‌$1'));
});

输入:

  

منمیتوانمهمهرابکشم,ولیتونمیتوانیهمهرامیکشی

输出:

  

منمیتوانمهمهرابکشم,ولیتونمیتوانیهمهرامیکشی

答案 2 :(得分:0)

我怀疑您遇到了问题,因为您的Javascript文件是使用不同的字符编码提供的。

如果您的HTML是text/html; charset=UTF-8,那么您的Javascript文件应编码为application/javascript; charset=UTF-8。在Apache服务器上,您可以将此行添加为.htaccess文件,将所有Javascript文件作为UTF-8提供:

AddCharset UTF-8 .js

答案 3 :(得分:0)

还要确保在正则表达式上启用多行标记,因为您似乎要对大块文本运行它。这是你如何做到的:

/می (\S+)/gi.test(X);