在正则表达式中匹配非ascii字符的最简单方法是什么?我想在输入字符串中单独匹配所有单词,但语言可能不是英语,所以我需要匹配ü、ö、ß和ñ之类的东西。此外,这是在Javascript/jQuery,所以任何解决方案将需要应用于此。
当前回答
我有一个问题与\p工作如预期,所以我只是使用了不同的策略,如:
([^\t]+)\t
找到任何不是制表符,直到下一个制表符…显然,这取决于你的搜索源,但你明白我的意思。现在我不需要弄清楚unicode字符什么有用,什么没用等等。
其他回答
这应该做到:
[^\x00-\x7F]+
它匹配ASCII字符集(0-127,即0x0到0x7F)中不包含的任何字符。
你可以用Unicode做同样的事情:
[^\u0000-\u007F]+
对于unicode,您可以查看以下两个资源:
Unicode范围的代码图表列表 此工具用于创建一个由Unicode块过滤的正则表达式。
所有支持Unicode的Regex类型都应该有一个特殊的字符类,比如\w,可以匹配任何Unicode字母。看看你的特殊口味吧。
Jeremy Ruten给出的答案很好,但我认为这并不是Paul Wicks所寻找的。如果我没理解错的话,Paul问的是匹配非英语单词können或móc的表达式。Jeremy的正则表达式只匹配非英文字母,所以需要进行小的改进:
([^\x00-\x7F]|\w)+
or
([^\u0000-\u007F]|\w)+
这个[^\x00-\x7F]和这个[^\u0000-\u007F]部分允许正则表达式匹配非英文字母。
这(|)是逻辑或,\w是英文字母,所以([^\u0000-\u007F]|\w)将匹配单个英文或非英文字母。
在表达式末尾的+表示它可以重复,因此整个表达式允许所有英语或非英语字母匹配。
这里您可以用各种字符串测试第一个表达式,这里是第二个表达式。
正则表达式、Unicode和Javascript的情况糟透了。程序员必须依赖外部库来识别“Αλφα”是一个单词,甚至“é”是一个字母,这是荒谬的。
但事情就是这样。
这家伙写了一个很好的库来处理Javascript正则表达式中的Unicode:
http://blog.stevenlevithan.com/archives/javascript-regex-and-unicode
Unicode的东西是这个正则库的一个插件:
http://xregexp.com/
这是一篇关于Unicode扩展的文章:
http://blog.stevenlevithan.com/archives/xregexp-unicode-plugin
和扩展页面本身:
http://xregexp.com/plugins/
很棒的工作,但Javascript在这方面的落后仍然让我感到沮丧。
(他为奥莱利写了一本关于这个话题的书,所以他很可能知道自己在说什么。)
他实现它的方法是通过添加具有特定属性的字符表。然后,当你用他的库构造一个正则表达式时,\p{charclass}被替换为[allcharactertersinclass]。
我有一个问题与\p工作如预期,所以我只是使用了不同的策略,如:
([^\t]+)\t
找到任何不是制表符,直到下一个制表符…显然,这取决于你的搜索源,但你明白我的意思。现在我不需要弄清楚unicode字符什么有用,什么没用等等。
推荐文章
- 将lodash导入到angular + typescript应用程序中
- 什么时候使用setAttribute vs .attribute=在JavaScript?
- 每60秒调用一个函数
- 精度为2的小数的简单正则表达式
- 我如何上传一个文件与JS获取API?
- 使用管道字符("|")分割字符串
- 在JavaScript中是否有一个“not in”操作符来检查对象属性?
- 如何触发点击一个链接使用jQuery
- 我如何能得到滚动条的位置与JavaScript?
- JavaScript中的yield关键字是什么?
- 如何显示一个对象的所有方法?
- .js和.mjs文件有什么区别?
- Axios处理错误
- ESLint解析错误:意外的令牌
- 同时映射和过滤一个数组