在正则表达式中匹配非ascii字符的最简单方法是什么?我想在输入字符串中单独匹配所有单词,但语言可能不是英语,所以我需要匹配ü、ö、ß和ñ之类的东西。此外,这是在Javascript/jQuery,所以任何解决方案将需要应用于此。
当前回答
这应该做到:
[^\x00-\x7F]+
它匹配ASCII字符集(0-127,即0x0到0x7F)中不包含的任何字符。
你可以用Unicode做同样的事情:
[^\u0000-\u007F]+
对于unicode,您可以查看以下两个资源:
Unicode范围的代码图表列表 此工具用于创建一个由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的Regex类型都应该有一个特殊的字符类,比如\w,可以匹配任何Unicode字母。看看你的特殊口味吧。
您使用与任何其他字符匹配相同的方法,但是您使用\uXXXX,其中XXXX是字符的unicode号。
看: http://unicode.org/charts/charindex.html
http://unicode.org/charts/
http://www.decodeunicode.org/
我有一个问题与\p工作如预期,所以我只是使用了不同的策略,如:
([^\t]+)\t
找到任何不是制表符,直到下一个制表符…显然,这取决于你的搜索源,但你明白我的意思。现在我不需要弄清楚unicode字符什么有用,什么没用等等。
这应该做到:
[^\x00-\x7F]+
它匹配ASCII字符集(0-127,即0x0到0x7F)中不包含的任何字符。
你可以用Unicode做同样的事情:
[^\u0000-\u007F]+
对于unicode,您可以查看以下两个资源:
Unicode范围的代码图表列表 此工具用于创建一个由Unicode块过滤的正则表达式。
推荐文章
- 将lodash导入到angular + typescript应用程序中
- 什么时候使用setAttribute vs .attribute=在JavaScript?
- 每60秒调用一个函数
- 精度为2的小数的简单正则表达式
- 我如何上传一个文件与JS获取API?
- 使用管道字符("|")分割字符串
- 在JavaScript中是否有一个“not in”操作符来检查对象属性?
- 如何触发点击一个链接使用jQuery
- 我如何能得到滚动条的位置与JavaScript?
- JavaScript中的yield关键字是什么?
- 如何显示一个对象的所有方法?
- .js和.mjs文件有什么区别?
- Axios处理错误
- ESLint解析错误:意外的令牌
- 同时映射和过滤一个数组