如何使用javascript从字符串中拆分字符(所有区域设置)和数字?

如何使用javascript从字符串中拆分字符(所有区域设置)和数字?,javascript,regex,string,Javascript,Regex,String,注意:我使用Intl.DateTimeFormat来格式化日期和时间,但问题是我无法通过使用该API单独获得给定日期的meridian值。但是我可以用下面的时间字符串得到指定日期的子午线值 ->下午4:38 ->上午4时58分 …因此,我需要编写两个方法,从字符串中获取子午线和时间值 比如说, getMeridian'下午4:38' -> 下午 getMeridian'4.58 AM'->AM 在没有子午线的情况下获得时间'下午4:38'->4:58 GetTimewithout子午线'4.58

注意:我使用Intl.DateTimeFormat来格式化日期和时间,但问题是我无法通过使用该API单独获得给定日期的meridian值。但是我可以用下面的时间字符串得到指定日期的子午线值

->下午4:38

->上午4时58分

…因此,我需要编写两个方法,从字符串中获取子午线和时间值

比如说,

getMeridian'下午4:38' -> 下午

getMeridian'4.58 AM'->AM

在没有子午线的情况下获得时间'下午4:38'->4:58

GetTimewithout子午线'4.58 AM'->4.58


有人能帮我解决这个问题吗?谢谢

下面的正则表达式帮助我在没有子午线的情况下获得GetTime

例如

var字符串=下午4:38'; string.replace/[^0-9:.]+/g; O/P:4:58


我仍然在寻找getMeridian's的答案下午4:38' -> 下午

如果您已经有了GetTime Without Meridian,为什么不这样做:

var getMeridian = function(myString) { myString.replace(getTimeWithoutMeridian(myString), "") }

它只是删除时间字符串并离开子午线

您如何知道在特定区域使用am/pm指示符?当然,最好只看时间:如果>=12,那是下午,否则我注意到下午12点是不连续的。@RobG,谢谢你的回答。正如您所提到的,我可以简单地检查>=12,但是我想要任何地区的本地化merdian字符串,这就是为什么我使用Intl.DateTimeFormat。只有当语言使用字符0-9时,它才有效。请尝试使用阿拉伯语:ar-EG或任何其他不使用ASCII数字或所谓阿拉伯数字的语言。@RobG:再次感谢,我正在向Intl.DateFormatter传递一个“可选”参数,该参数有助于为所有语言环境提供数值!阿拉伯语返回类似于:£١:٤:٠٧م的11:44:57 PM,即使选项中指定了数字或2位数。是@RobG,您是对的!我正在考虑另一种解决办法。同时,如果你发现了什么,请与我分享。这似乎是规范中的一个缺陷,你不能只获得am/pm符号,也不能指定普通阿拉伯数字而不是真正的阿拉伯数字,后者可以由-u-nu-arab或arabtext指定。谢谢@Titus。如果我发现没有子午线,它会起作用的。但正如@RubG在我的回答中提到的,我对阿拉伯语的语言环境有一个问题。因此,我正在寻找另一种解决方案。
var getMeridian = function(myString) { myString.replace(getTimeWithoutMeridian(myString), "") }