使用正则表达式查找两个单引号之间的非ascii子字符串

时间:2014-10-04 06:06:21

标签: regex string

我想知道两个单引号之间是否有子串有non_ascii字符。

测试用例:

"abc 'ab中文09中文' 99 '9999' 'abcd' '中文' "

预期结果:

'ab中文09中文'
'中文'

我试过这个正则表达式:

/'[^a-zA-Z0-9\s]+?'/

只能使用所有非ascii获取子串'中文'。但我也希望'ab中文09中文'具有非ascii。

我尝试将子字符串与所有ascii字符匹配并反转标准:

/'^([a-zA-Z0-9\s]+)?'/

但什么都没有。

任何帮助将不胜感激,提前感谢!

1 个答案:

答案 0 :(得分:4)

您可以使用以下正则表达式(包围[^']*以匹配其他ascii / non-ascii字符,并稍微修改内部字符类不包括'):

/'[^']*[^a-zA-Z0-9\s'][^']*'/

Javascript示例:

"abc 'ab中文09中文' 99 '9999' 'abcd' '中文' ".match(/'[^']*[^a-zA-Z0-9\s'][^']*'/g)
# => ["'ab中文09中文'", "'中文'"]

<强>更新

使用以下正则表达式匹配任何非ascii字符:

[^\x00-\x7F]

[^\000-\177]