Sha*_*awn 6 javascript regex diacritics word-boundary
我有一个JavaScript正则表达式,基本上找到两个字母的单词.问题似乎是它将重音字符解释为单词边界.的确,似乎是这样
单词边界("\ b")是两个字符之间的一个点,在它的一边有一个"\ w",另一边有一个"\ W"(按任意顺序),计算出假想的字符字符串的开头和结尾匹配"\ W". AS3 RegExp用于匹配其中包含边界类型字符的单词
从那以后
\ w匹配任何字母数字字符(单词字符),包括下划线([a-zA-Z0-9_]的缩写).\ W匹配任何非单词字符([^ a-zA-Z0-9_]的缩写) http://www.javascriptkit.com/javatutors/redev2.shtml
显然重音字符不被考虑在内.这就像是一个问题Montréal.如果é被认为是单词边界,则al是两个字母的单词.我已经尝试自己定义一个允许重音字符的单词边界,但是看作单词边界甚至不是一个字符,我不知道如何去寻找它.
有帮助吗?
以下是相关的JavaScript代码,userInput使用re_state正则表达式搜索和查找双字母单词:
var re_state = new RegExp("\\b([a-z]{2})[,]?\\b", "mi");
var match_state = re_state.exec(userInput);
document.getElementById("state").value = (match_state)?match_state[1]:"";
Run Code Online (Sandbox Code Playgroud)
While JavaScript regexes recognize non-ASCII characters in some cases (like \s), it's hopelessly inadequate when it comes to \w and \b. If you want them to work with anything beyond the ASCII word characters, you'll have to either use a different language, or install Steve Levithan's XRegExp library with the Unicode plugin.
By the way, there's an error in your regex. You have a \b after the optional trailing comma, but it should be in front:
"\\b([a-z]{2})\\b,?"
Run Code Online (Sandbox Code Playgroud)
我也删除了方括号; 如果逗号在正则表达式中具有特殊含义,那么你只需要那些,但事实并非如此.但我怀疑你根本不需要匹配逗号; \b应该足以确保你在这个词的最后.如果您不需要逗号,则不需要捕获组:
"\\b[a-z]{2}\\b"
Run Code Online (Sandbox Code Playgroud)
Bee*_*eel -3
您是否将 JavaScript 设置为使用非 ASCII?以下页面建议将 JavaScript 设置为使用 UTF-8: http://blogs.oracle.com/shankar/entry/how_to_handle_utf_8
它说:
将字符集属性(charset =“utf-8”)添加到父页面中的脚本标签:
Run Code Online (Sandbox Code Playgroud)script type="text/javascript" src="[path]/myscript.js" charset="utf-8"
| 归档时间: |
|
| 查看次数: |
2736 次 |
| 最近记录: |