如何修改Google Forms段落题正则表达式以支持引号类字符?
解决Google Forms段落问题正则表达式的移动端字符限制问题
问题分析
原正则表达式^[\x0A-\xFF]*$原本用于禁止输入emoji、长破折号(\x97)和欧元符号(\x80),但在移动端Chrome中意外限制了以下6种引号类字符:
- 双引号(
\x22) - 单引号(
\x27) - 左单引号(
\x91) - 右单引号(
\x92) - 左双引号(
\x93) - 右双引号(
\x94)
这是移动端Chrome对部分ASCII扩展字符的编码解析差异导致的,即便这些字符在\x0A-\xFF范围内,也被误判拦截。
修改后的正则表达式
我们可以通过明确拆分字符范围,保留原规则的同时确保目标字符被允许:
^[\x0A-\x7F\x91-\x94\x98-\xFF]*$
规则说明
\x0A-\x7F:覆盖换行符和所有标准ASCII字符,包含\x22双引号、\x27单引号\x91-\x94:单独列出那4种扩展引号字符,避免移动端解析异常\x98-\xFF:包含\x97之后的所有扩展ASCII字符,主动排除\x80(欧元)和\x97(长破折号)
如果需要更严谨地禁止所有emoji(包括特殊编码的emoji),可以补充Unicode属性校验:
^(?![\p{Emoji}])[\x0A-\x7F\x91-\x94\x98-\xFF]*$
这个版本会额外确保内容中不包含任何emoji字符。
验证建议
- 在移动端Chrome中测试上述正则,确认6种引号类字符可正常输入
- 验证欧元符号、长破折号和emoji仍被拦截
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

