加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 连字符和撇号字符 – 不同语言的相同ASCII码?

发布时间:2020-12-14 05:47:14 所属栏目:百科 来源:网络整理
导读:我需要指定用于验证用户输入的正则表达式,允许用户在 Windows桌面操作系统或Mac OS / X桌面操作系统上输入连字符或撇号字符. 用户可能已配置以下语言: 英语 法国人 西班牙语 葡萄牙语 夏威夷人 我不明白我是否使用标准的ASCII正则表达式用于连字符和apostop
我需要指定用于验证用户输入的正则表达式,允许用户在 Windows桌面操作系统或Mac OS / X桌面操作系统上输入连字符或撇号字符.

用户可能已配置以下语言:

>英语
>法国人
>西班牙语
>葡萄牙语
>夏威夷人

我不明白我是否使用标准的ASCII正则表达式用于连字符和apostophe(例如[‘ – ])是否会捕获用户在大多数情况下键入的连字符或撇号键.我很欣赏我的定义非常宽松,因为有许多不同的键盘布局,操作系统版本和语言定义(例如fr_FR,ca_FR).

我已经检查了以下资源并且通常在谷歌搜索,但是没有找到任何关于说由连字符密钥或撇号密钥生成的ASCII代码将始终分别是ASCII代码45和ASCII代码39的任何内容.

> http://en.wikipedia.org/wiki/Keyboard_layout
> http://en.wikipedia.org/wiki/Hyphen
> http://en.wikipedia.org/wiki/Apostrophe

注意:如果您觉得这个问题措辞严厉,请添加评论以帮助我改进它.

解决方法

你混淆了几件事:

> keyboard layout决定了为扫描码分配的值.
> localization settings确定用户应该使用哪种语言,并且用户需要小数点或逗号.
> character encoding是如何将glyph编码到位存储器中,反之,如何将位解码为字形

如果您正在验证用户输入,则不应对扫描码感兴趣. QWERTY键盘上的DVORAK布局用户将按Q键输入’.你不应该搞砸了.因此,您没有处理键盘布局的业务.

这个键盘的存在,应该提醒你,哪些键不是你的头痛,而是由用户决定.

本地化设置对您很重要,但不适用于您的正则表达式.但是,如果用户输入无效,他们会告诉您应该使用何种语言添加错误消息.一个好的coding practice是使用像gettext这样的库来管理它.

当您验证输入时,最重要的是什么.只有那两件事:什么是有效的,什么是输入.

您(或您的域专家)决定什么是有效的.连字符减号与连字符或n-dash一样可接受.

输入将被编码;计算机使用位,而不是字形串.它可能是ASCII,但如果我能帮助它,我会转向unicode.

至于你真正关心的问题,如果我可以改写它:“所有用户都可以轻松输入’和 – ?”.我想他们可能会.许多重要的编程语言都使用这些字形来表示.表示字符串并作为减法运算符.如果你的应用程序需要(dis)允许某些字形,你可以put unicode code points or categories in your regex.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读