配置单元表中是否有任何regex或translate或任何其他表达式只考虑键盘字符而忽略控制字符和ascii字符?
示例:regexp \u replace(选项类型,“[^a-za-z0-9]+”,“”)
在上述表达式中,只考虑字符和数字,而不考虑任何键盘特殊字符数据,如%、&、*、?、,。,?,。。可用的话,我得到的输出为空白。
上校:布维?你在哪里?
结果:布维你在哪
但我要输出为布维?你在哪里?
像这样,如果任何特殊的键盘字符出现,那么它将显示为是,任何控制或ascii字符来,它将忽略。
2条答案
按热度按时间btxsgosb1#
你应该考虑到不同的键盘布局(语言)有不同的“特殊”字符,比如德语ö ä ü 或者西班牙语ñ (仅举几个例子——不谈亚洲、希伯来语或阿拉伯语键盘)。
我看到了两种解决方案:1)也许您应该定义一个允许的字符列表并将它们放入字符类中,这样您就可以严格控制允许的字符,但您可能会排除大多数语言
2.)您可以查看正则表达式unicode类,您可以允许任何“字母”
\p{L}
或“数字”\p{N}
甚至标点符号\p{P}
并且只允许那些你知道会引起问题的字符,比如控制字符\p{C}
有关unicode正则表达式的详细信息,请参阅regular-expression.info编辑:
如果您只想使用英语,并且可以假设您只允许使用ascii,那么您可以在字符类中键入键盘上找到的每个键,作为一个不完整的示例:
/^[-a-zA-Z0-9,.-;:_!"§$%&]+$/
或您可以使用ascii表来确定允许字符的范围,在您的例子中是从“space”开始的
到“花括号”
}
并欺骗角色类允许所有这些:/^[ -}]+$/
b4lqfgs42#
我得到了解决方案regexp\u replace(选项类型,“[^a-za-z0-9*!@+-/#$%()\u=/<>?\ |&]+”,“”)作品