带有阿拉伯语表达式的正则表达式



如何让Javascript忽略通过正则表达式اعراب的阿拉伯语表达式? 例如,我希望وؤ相等,ا آ اَ اِ都是平等的,依此类推。请帮忙。多谢。

解决方案是将重音字母转换为非重音等效字母,这样就可以更轻松地检查它们是否相等。

这是一个简单的代码,可以帮助您识别重音,然后将其替换为原始字母。

var noAccentOrigin = {
  'ك': 'ک',
  'ﻷ': 'لا',
  'ؤ': 'و',
  'ى': 'ی',
  'ي': 'ی',
  'ئ': 'ی',
  'أ': 'ا',
  'إ': 'ا',
  'آ': 'ا',
  'ٱ': 'ا',
  'ٳ': 'ا',
  'ة': 'ه',
  'ء': '',
  'ِ': '',
  'ْ': '',
  'ُ': '',
  'َ': '',
  'ّ': '',
  'ٍ': '',
  'ً': '',
  'ٌ': '',
  'ٓ': '',
  'ٰ': '',
  'ٔ': '',
  '�': ''
}
var accentRemover = function(str) {
  return str.replace(/[^u0000-u007E]/g, function(a) {
    return noAccentOrigin[a] == undefined ? a : noAccentOrigin[a];
  });
}
var stringToTest = 'ا آ اَ اِ'
console.log('Original string :' + stringToTest)
console.log('Converted string :' + accentRemover(stringToTest))
//test example
console.log('Is ؤ and و are equal ? : ')
console.log(accentRemover('ؤ') == accentRemover('و'))

希望有帮助

我对此进行了一些思考,您真正需要的是使用具有基本级别的 Unicode 排序算法,这个问题很好地概述了这个问题,并查看我建议使用 String.prototype.localeCompare(( 函数给出sensitivity的答案base

太棒了 但我想要的是,当我搜索"و"时,JavaScript 还在搜索中包含"ؤ",这意味着该函数不应该删除重音,而是添加它。

非常感谢

var noAccentOrigin = {
  'ك': 'ک',
  'ﻷ': 'لا',
  'ؤ': 'و',
  'ى': 'ی',
  'ي': 'ی',
  'ئ': 'ی',
  'أ': 'ا',
  'إ': 'ا',
  'آ': 'ا',
  'ٱ': 'ا',
  'ٳ': 'ا',
  'ة': 'ه',
  'ء': '',
  'ِ': '',
  'ْ': '',
  'ُ': '',
  'َ': '',
  'ّ': '',
  'ٍ': '',
  'ً': '',
  'ٌ': '',
  'ٓ': '',
  'ٰ': '',
  'ٔ': '',
  '�': ''
}
var accentRemover = function(str) {
  return str.replace(/[^u0000-u007E]/g, function(a) {
    return noAccentOrigin[a] == undefined ? a : noAccentOrigin[a];
  });
}
var stringToTest = 'ا آ اَ اِ'
console.log('Original string :' + stringToTest)
console.log('Converted string :' + accentRemover(stringToTest))
//test example
console.log('Is ؤ and و are equal ? : ')
console.log(accentRemover('ؤ') == accentRemover('و'))

最新更新