如何用javascript中的"普通"形式(a,s,t)替换变音符号(ă,ş,ţ等)?
我正在寻找一种方法来替换用户输入中"更正"引号的引号.
这个想法
这里有一个简要说明原则的片段:
对于引号,"正确"的引号有开启“和关闭”,因此需要以良好的方式进行替换.
$('#myInput').on("keyup", function(e) {
// The below doesn't work when there's no space before or after.
this.value = this.value.replace(/ "/g, ' “');
this.value = this.value.replace(/" /g, '” ');
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="myInput"></textarea>Run Code Online (Sandbox Code Playgroud)
但上述情况并非在所有情况下都有效.
例如,当"引用的单词"位于句子或行的开头或结尾时.
例子
可能的输入(小心,法语里面!:)):
⋅我很开心!Çayest,j'ai"osé",et mon"âmesœur"étaitaurendez-vous ...
⋅标语上写着:"有些文字"有些文字"有些文字".并"注意这里的空间!"
⋅"Inc"或"rect"quo"tes should"不得更换.
⋅我说:"如果它也适用于'单身',我会更喜欢它!"
正确的输出:
⋅我"快乐"!Çayest,j'ai"osé",et mon"âmesœur"étaitaurendez-vous ...
⋅标志上写着:"有些文字"有些文字"有些文字."和"注意这里的空间!"
⋅"Inc "或"rect"quo"tes应"不应被替换".
⋅我说:"如果它也适用于'单身',我会更喜欢它!"
输出不正确:
⋅标志上写着:"有些文字"有些文字"有些文字."和[...]
为什么不正确:
→报价单的末尾和结束标记之间不应有空格.
→在右引号和单词之间应该有一个空格.
→单词和开头引号之间应该有一个空格.
→开头引号与其报价之间不应有空格.
需要
在所有这些情况下,如何才能有效和轻松地替换报价?
如果可能的话,我也希望解决方案能够"纠正"引号,即使我们在整个句子输入后添加它们也是如此.
请注意,我不能(不能)在正则表达式中使用单词分隔符"\ b",因为"重音字符,例如"é"或"ü"不幸被视为单词分隔符."(来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
当然,如果没有其他解决方案,我会想出一个我认为是单词分隔符的列表并在正则表达式中使用它.但我更喜欢有一个很好的工作功能而不是列表!
任何想法将不胜感激.
在MongoDB"db.foo.find()"语法中,如何判断它是否匹配所有字母及其重音版本?
举例来说,如果我有我的数据库名称的列表:
若昂·
弗朗索瓦·
赫苏斯
我如何允许搜索字符串"Joao","Francois"或"Jesus"以匹配给定的名称?
我希望我每次都不必像这样进行搜索:
db.names.find({name : /Fr[aã...][nñ][cç][all accented o characters][all accented i characters]s/ })
我需要像"César"这样的词匹配这样的正则表达式/^cesar/i.
是否有选项/i配置正则表达式,以便它忽略急性重音?或者唯一的解决方案是使用这样的正则表达式/^césar/i.
javascript regex diacritics special-characters non-ascii-characters
使用jQuery DataTables时,是否可以在使用过滤器时进行不区分重音的搜索?例如,当我输入'e'字符时,我想用'e'或'é','è'搜索每个单词.
我想到的是将字符串规范化并将它们放入一个单独的隐藏列中,但这并不能解决字母顺序问题.
我尝试了以下方法:
$.fn.dataTableExt.ofnSearch = function ( data ) {
return ! data ?
'' :
typeof data === 'string' ?
data
.replace( /\n/g, ' ' )
.replace( /á/g, 'a' )
.replace( /é/g, 'e' )
.replace( /í/g, 'i' )
.replace( /ó/g, 'o' )
.replace( /ú/g, 'u' )
.replace( /ê/g, 'e' )
.replace( /î/g, 'i' )
.replace( /ô/g, 'o' )
.replace( /è/g, 'e' )
.replace( /ï/g, 'i' )
.replace( /ü/g, 'u' )
.replace( /ç/g, 'c' ) : …Run Code Online (Sandbox Code Playgroud) javascript jquery non-ascii-characters accent-insensitive jquery-datatables
上下文:我正在使用HTML表提供大型列表的前端.该表的内容有各种不同的(印欧语系)语言.我想让我的用户轻松过滤表格.
实现"查找类似"搜索的简单/最简单的方法是什么?"找到类似"我的意思是:
h-ell.o搜索时 发现hello)hélló搜索时发现hello)我已经有了JQuery,但是,如果合适的话,还会安装第三方JS库.
例子:
[ 'hello', 'héllo', 'h-ello', 'hallo', 'hellot', 'hell', 'hellø' ]
用户搜索héllo,应匹配[ 'héllo', 'hello', 'h-ello', 'hellø']
不匹配'hallo'(仅拼写,a根本不"连接"到e).舒尔德不匹配hellot(太长).不应该匹配hell(太短).
我想知道如何使用Javascript将UTF-8中的字符"转换"为最接近的ASCII等价物,就像PHP中的Iconv doest一样.
例:
ü变成你
成为o
我宁愿不使用替换,因为a)它需要一组完整的字符,这是很多工作而且b)我很难得到一套完整的字符,而且我永远不会确定如果我错过了一两个.
我有一个类型文本的输入,我返回true或false取决于被禁止的单词列表.一切正常.我的问题是我不知道如何检查数组中带有变音符号的单词:
var bannedWords = ["bad", "mad", "testing", "b??"];
var regex = new RegExp('\\b' + bannedWords.join("\\b|\\b") + '\\b', 'i');
$(function () {
$("input").on("change", function () {
var valid = !regex.test(this.value);
alert(valid);
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type='text' name='word_to_check'>Run Code Online (Sandbox Code Playgroud)
现在在单词上b??它返回true而不是false,例如.
我正在搜索javascript函数来替换法语变音符号并且来自这段代码:
String.prototype.removeDiacritics = function() {
var diacritics = [
[/[\300-\306]/g, 'A'],
[/[\340-\346]/g, 'a'],
[/[\310-\313]/g, 'E'],
[/[\350-\353]/g, 'e'],
[/[\314-\317]/g, 'I'],
[/[\354-\357]/g, 'i'],
[/[\322-\330]/g, 'O'],
[/[\362-\370]/g, 'o'],
[/[\331-\334]/g, 'U'],
[/[\371-\374]/g, 'u'],
[/[\321]/g, 'N'],
[/[\361]/g, 'n'],
[/[\307]/g, 'C'],
[/[\347]/g, 'c'],
];
var s = this;
for (var i = 0; i < diacritics.length; i++) {
s = s.replace(diacritics[i][0], diacritics[i][1]);
}
return s;
Run Code Online (Sandbox Code Playgroud)
}
这很好,但我想知道从哪里得到那些正则表达式数字:[/ [\ 300-\306]/g,'A'] ......
我问的原因是因为我注意到替换列表缺少ÿ字符,但我不知道正则表达式是什么来取代ÿ到y.
谢谢!
我想在Javascript中将重音字母和各种编码转换成简单的英文ASCII格式,并想知道有哪些可能的选项.我需要的是:
éclair ~becomes~ eclair
bär ~becomes~ bar
?????? ~becomes~ privet
????? ~becomes~ konnichiva
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,这个想法是将任何语言转换为简单的英语ASCII等效语言.áčçéñtèd字母被转换为它们的简单等价物,西里尔字母或日文编码的字母被转换成它们的音译等价物.
有人知道在Javascript中这样做的方法吗?
javascript ×9
jquery ×4
regex ×4
diacritics ×3
ascii ×2
html ×1
iconv ×1
mongodb ×1
node.js ×1
utf-8 ×1