正则表达式 – 连字符和撇号字符 – 不同语言的相同ASCII码?
我需要指定用于验证用户输入的正则表达式,允许用户在
Windows桌面操作系统或Mac OS / X桌面操作系统上输入连字符或撇号字符.
用户可能已配置以下语言: >英语 我不明白我是否使用标准的ASCII正则表达式用于连字符和apostophe(例如[‘ – ])是否会捕获用户在大多数情况下键入的连字符或撇号键.我很欣赏我的定义非常宽松,因为有许多不同的键盘布局,操作系统版本和语言定义(例如fr_FR,ca_FR). 我已经检查了以下资源并且通常在谷歌搜索,但是没有找到任何关于说由连字符密钥或撇号密钥生成的ASCII代码将始终分别是ASCII代码45和ASCII代码39的任何内容. > http://en.wikipedia.org/wiki/Keyboard_layout 注意:如果您觉得这个问题措辞严厉,请添加评论以帮助我改进它. 解决方法
你混淆了几件事:
> keyboard layout决定了为扫描码分配的值. 如果您正在验证用户输入,则不应对扫描码感兴趣. QWERTY键盘上的DVORAK布局用户将按Q键输入’.你不应该搞砸了.因此,您没有处理键盘布局的业务. 这个键盘的存在,应该提醒你,哪些键不是你的头痛,而是由用户决定. 本地化设置对您很重要,但不适用于您的正则表达式.但是,如果用户输入无效,他们会告诉您应该使用何种语言添加错误消息.一个好的coding practice是使用像gettext这样的库来管理它. 当您验证输入时,最重要的是什么.只有那两件事:什么是有效的,什么是输入. 您(或您的域专家)决定什么是有效的.连字符减号与连字符或n-dash一样可接受. 输入将被编码;计算机使用位,而不是字形串.它可能是ASCII,但如果我能帮助它,我会转向unicode. 至于你真正关心的问题,如果我可以改写它:“所有用户都可以轻松输入’和 – ?”.我想他们可能会.许多重要的编程语言都使用这些字形来表示.表示字符串并作为减法运算符.如果你的应用程序需要(dis)允许某些字形,你可以put unicode code points or categories in your regex. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |