我想知道两个单引号之间是否有子串有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]+)?'/
但什么都没有。
任何帮助将不胜感激,提前感谢!
答案 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]