是否有正则表达式来测试字符串是否用于区域设置? [关闭]

2024-01-01

我对正则表达式一无所知,但我想我必须使用它来解决我的问题,我得到了一些如下所示的文件名:

MyResource
MyResource.en-GB
MyResource.en-US
MyResource.fr-FR
MyResource.de-DE

这个想法是测试我的字符串是否以“[字母][字母]-[字母][字母]”结尾

我知道这是一个非常菜鸟,但我只是不知道如何去做,即使我确切地知道我想做什么......:(


为了满足基本变体:

^[A-Za-z]{2,4}([_-][A-Za-z]{4})?([_-]([A-Za-z]{2}|[0-9]{3}))?$

其中包括:

  1. 语言代码:2 或 3 或 4 供将来使用,alpha。
  2. 可选脚本代码:ISO 15924 http://unicode.org/iso15924/iso15924-codes.html4阿尔法。
  3. 可选国家代码:ISO 3166-1 https://en.wikipedia.org/wiki/ISO_3166-12 个字母或 3 个数字。
  4. 用下划线或破折号分隔。

有效的例子有:

  • de
  • en-US
  • zh-汉特-TW
  • En-au
  • aZ_cYrl-aZ。

对于OP的具体问题,这需要以前缀/^MyResource[.]并后缀为$/确保整个文件名是以语言环境结尾的有效资源文件。

请注意,某些编程语言的函数可能只接受特定形式,例如仅接受下划线和大写国家/地区代码。 PHP 的intl函数接受大小写和分隔符。 PayPal 仅接受该语言,或la_CY形式,其中la是语言并且CY是国家/地区。 PHPlocale_canonicalize函数可用于标准化此格式。

IETF RFC 5646 https://www.rfc-editor.org/rfc/rfc5646#page-5,它管理这些标签的互联网使用,建议使用大写和分隔格式,例如az-Cyrl-AZ,如上面前三个示例中所使用的,尽管它表示处理器应该接受大小写和任一分隔符的任意混合,如最后两个示例所示。显示语言环境时,使用-因为分隔符允许更细粒度的换行,否则可能会产生明显的空行,就像非换行时一样_使用,尤其是在表格单元格中。

推荐的基本格式的正则表达式是:

^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$

正则表达式仅涵盖基本格式。附加功能有多种变体,例如本地区域。RFC 5646 https://www.rfc-editor.org/rfc/rfc5646#page-5允许此类变体以及私有扩展和向后兼容形式。这完全取决于所需的粒度。这CLDR http://cldr.unicode.org/PHP 使用的 Unicode 数据库intl函数和其他程序,可能在不同版本中包含此类变体,尽管它们也可能在以后消失。

如果使用基于 CLDR 的函数集,例如 PHP 的intl http://php.net/manual/en/book.intl.php扩展名,您可以检查语言环境中是否存在intl数据库使用如下函数:

<?php
 function is_locale($locale=''){
  // STANDARDISE INPUT
  $locale=locale_canonicalize($locale);
  
  // LOAD ARRAY WITH LOCALES
  $locales=resourcebundle_locales('');
  
  // RETURN WHETHER FOUND
  return (array_search($locale,$locales)!==F);
 }
?>

加载和搜索数据大约需要半毫秒,因此不会对性能造成太大影响。

当然,它只会在与所使用的 PHP 版本一起提供的 CLDR 版本的数据库中查找那些内容,但会随着每个后续 PHP 版本进行更新。

请注意,某些区域设置不适用于国家/地区,而是区域,并且这些区域设置通常是数字,例如001对于“世界”,150对于“欧洲”和419为“拉丁美洲”。所以现在有en-001, en-150, ar-001, and es-419,可用于通用语言目的。例如,en-001旨在解耦依赖en-us作为一种代用英语,特别是因为它的日期格式和拼写与其他 100 个地区的英语完全不同en变体。这en-150区域设置与en-001编号分隔符和其他欧洲特定格式除外。

一般来说,正则表达式是一种很好的前端健全性检查,可以过滤掉非法字符,特别是为将来可能添加的格式保留格式。它还有助于防止将恶意字符组合发送到查找工具,特别是在使用基于文本的查找命令机制(例如 SQL 或 Xpath)时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否有正则表达式来测试字符串是否用于区域设置? [关闭] 的相关文章

  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 在 Xamarin Android 中将图像从 URL 异步加载到 ImageView 中

    我有一个包含多个项目的 ListView 列表中的每个项目都应该有一个与之关联的图像 我创建了一个数组适配器来保存每个列表项并具有我希望加载的图像的 url 我正在尝试使用 Web 请求异步加载图像 并设置图像并在加载后在视图中更新它 但视
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 将字符串从非托管代码传递到托管

    我在将字符串从非托管代码传递到托管代码时遇到问题 在我的非托管类中 非托管类 cpp 我有一个来自托管代码的函数指针 TESTCALLBACK FUNCTION testCbFunc TESTCALLBACK FUNCTION 接受一个字符
  • 使用 C# 在 WinRT 中获取可用磁盘空间

    DllImport kernel32 dll SetLastError true static extern bool GetDiskFreeSpaceEx string lpDirectoryName out ulong lpFreeBy
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 为什么模板不能位于外部“C”块内?

    这是一个后续问题一个答案 https stackoverflow com questions 4866433 is it possible to typedef a pointer to extern c function type wit
  • 编译的表达式树会泄漏吗?

    根据我的理解 JIT 代码在程序运行时永远不会从内存中释放 这是否意味着重复调用 Compile 表达式树上会泄漏内存吗 这意味着仅在静态构造函数中编译表达式树或以其他方式缓存它们 这可能不那么简单 正确的 他们可能是GCed Lambda
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 初始化变量的不同方式

    在 C 中初始化变量有多种方法 int z 3 与 int 相同z 3 Is int z z 3 same as int z z 3 您可以使用 int z z 3 Or just int z 3 Or int z 3 Or int z i
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • 网络参考共享类

    我用 Java 编写了一些 SOAP Web 服务 在 JBoss 5 1 上运行 其中两个共享一个类 AddressTO Web 服务在我的 ApplycationServer 上正确部署 一切都很顺利 直到我尝试在我的 C 客户端中使用
  • 用 C 实现 Unix shell:检查文件是否可执行

    我正在努力用 C 语言实现 Unix shell 目前正在处理相对路径的问题 特别是在输入命令时 现在 我每次都必须输入可执行文件的完整路径 而我宁愿简单地输入 ls 或 cat 我已经设法获取 PATH 环境变量 我的想法是在 字符处拆分
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • EPPlus Excel 更改单元格颜色

    我正在尝试将给定单元格的颜色设置为另一个单元格的颜色 该单元格已在模板中着色 但worksheet Cells row col Style Fill BackgroundColor似乎没有get财产 是否可以做到这一点 或者我是否必须在互联
  • 如何构建印度尼西亚电话号码正则表达式

    这些是一些印度尼西亚的电话号码 08xxxxxxxxx 至少包含 11 个字符长度 08xxxxxxxxxxx 始终以 08 开头 我发现这个很有用 Regex regex new Regex 08 0 9 0 9 0 9 0 9 0 9
  • 如何将字符串“07:35”(HH:MM) 转换为 TimeSpan

    我想知道是否有办法将 24 小时时间格式的字符串转换为 TimeSpan 现在我有一种 旧时尚风格 string stringTime 07 35 string values stringTime Split TimeSpan ts new
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co

随机推荐

  • VB.NET 中的十六进制到 8 位无符号数组

    我有一个十六进制值 07A5953EE7592CE8871EE287F9C0A5FBC2BB43695589D95E76A4A9D37019C8 我想将其转换为字节数组 NET 3 5 中是否有一个内置函数可以完成这项工作 或者我是否需要编
  • 有没有办法为我的基于平台的Python应用程序提供条件requirements.txt文件?

    我编写了一个与 Linux 和 Windows 平台兼容的 python 应用程序 然而有一个问题 我需要的 Windows 的 python 软件包之一与 Linux 不兼容 幸运的是 还有另一个软件包可以在 Linux 上提供相同的功能
  • 如果 char 数组是 Java 中的对象,为什么打印它不显示其哈希码?

    打印 char 数组不显示哈希码 class IntChararrayTest public static void main String args int intArray 0 1 2 char charArray a b c Syst
  • 有 BOINC 编程经验吗?

    我被 BOINC 吸引是因为我的一个小项目 我听说过 BOINC 但没有太多了解它的工作原理 主要是因为我现在专注于其他优先事项 我想知道的是 你们中是否有人真正尝试过为 BOINC 编程并让程序在分布式计算机网络上运行 我特别对以下问题感
  • Kotlin:什么情况下会发生隐式转换?

    我是 Kotlin 的初学者 我最熟悉Python 刚刚读完基础Java教程https docs oracle com javase tutorial java index html https docs oracle com javase
  • 可以为 jQuery 前置添加动画吗?

    我在单击按钮时将一些数据添加到我的页面中 而不是立即填充到页面上 我想知道是否有一种方法可以对数据进行动画处理prepend using slideToggle或 CSS 动画 这是我当前的脚本 var data data html var
  • 为什么Android API中有这么多的浮动?

    Java 中默认的浮点类型是 double 如果你硬编码一个常量 比如2 5在你的程序中 Java会自动将其变为双精度 当您对浮点数或整数执行可能受益于更高精度的操作时 该类型将 提升 为双精度 但在 Android API 中 从音量到矩
  • 以内容长度分隔的消息正文过早结束(预期:

    我正在尝试在 apache httpclient 的帮助下获取 HTTP 响应 我成功获取标头 但当我尝试获取内容时它会引发异常 例外是 org apache http ConnectionClosedException Premature
  • (xcode 5) ibtool 失败,退出代码为 255

    有人能解决这个问题吗 我看过其他答案 但似乎没有一个对我有用 我可以正常运行其他项目 但我当前的项目因上述错误而失败 我想不出明显的原因 Clean 运行正常 没有代码错误 构建项目会导致此问题 我正在运行 xcode 5 我尝试重新安装模
  • Hadoop 无法完成作业,因为“设备上没有剩余空间”

    我正在尝试运行一个非常简单的 hadoop 作业 它是经典 wordCount 的修改版 它不是对单词进行计数 而是对文件中的行进行计数 我想用它来清理一堆我知道有重复的大日志文件 每个大约 70GB 每一行都是一个 记录 因此我感兴趣的是
  • 为什么使用 IList 或 List?

    我知道已经有很多关于此的帖子 但它仍然让我感到困惑 为什么要传入像 IList 这样的接口并返回像 IList 这样的接口而不是具体列表 我读了很多帖子 说这如何使以后更改实现变得更容易 但我只是不完全明白它是如何工作的 说一下我是否有这个
  • 使用请求负载模拟 HTTP 请求和响应

    我使用以下代码来模拟 HTTP 请求和响应对象节点模拟http https github com howardabrams node mocks http var request httpMocks createRequest method
  • 在 Rails 应用程序中启用 2 个不同的模型与同一张表对话

    我遇到了一些集成问题 我有两个模型需要映射 以便它们能够与同一张表对话 因此 一个模型具有一些映射到表中相应列的属性 对于另一个模型也是如此 我听说过别名 这是一种可以使用的技术 如有帮助 将不胜感激 谢谢 您创建两个模型并定义相同的 ta
  • 如何将 Sass 和 CSS 模块与 create-react-app 一起使用?

    我正在使用 FileName module scss 来设计我的反应元素 如下所示 this is my component import React from react import Aux from hoc Aux import cl
  • 我从未听说过的 fileinfo 和 mime 类型

    我对哑剧类型并不陌生 但这很奇怪 通常 文本文件会被认为是文本 纯 mime 但现在 在实现 fileinfo 之后 这种类型的文件现在被认为是 text x pascal 我有点担心 因为我需要确保在允许用户上传之前设置正确的 mime
  • 如何在 ngGridEventScroll 上使用页面滚动?

    使用ag Grid v2 X 我试图开发一个网格 当页面滚动 不是网格滚动 到达底部时加载更多数据 通过搜索类似的问题 我找到了解决方案第一个问题 ngGrid 必须具有动态高度 所以我做了这个 ngViewport height auto
  • “SELECT COUNT(column)”比“SELECT COUNT(*)”更快/更慢吗? [复制]

    这个问题在这里已经有答案了 我在 MSSQL2008 中运行这样的查询 select count from t1 inner join t2 on t1 id t2 t1 id inner join t3 on t1 id t3 t1 id
  • C++中的make_heap是如何实现复杂度为3N的?

    我想知道C 中make heap的算法是什么 复杂度为3 N 我能想到的通过插入元素来创建堆的唯一方法的复杂度为 O N Log N 多谢 您将堆表示为数组 下面的两个元素i 第一个元素位于位置2i 1 and 2i 2 如果数组有n然后
  • 重定向到 codeigniter 中的引用网址

    在我的项目的消息传递系统中 当您收到用户发来的消息时 您会收到一封电子邮件警报 说另一个用户已发送消息以查看该消息 请单击此处 即消息的网址 因此 如果用户未登录系统他被重定向到登录页面 登录后应该返回到引用网址 我在核心文件夹中创建了一个
  • 是否有正则表达式来测试字符串是否用于区域设置? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我对正则表达式一无所知 但我想我必须使用它来解决我的问题 我得到了一些如下所示的文件名 MyResource MyResource e