首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何判断javascript字符串是数字还是日期?

如何判断javascript字符串是数字还是日期?
EN

Stack Overflow用户
提问于 2021-03-18 07:58:44
回答 3查看 458关注 0票数 0

我有一个可能是字符串化日期或数字的值。我想以不同的方式处理每一件案子。

日期值可以是任何可由日期库解析的有效日期字符串,如dayjs。例如:"10/10/2020""10-20-2020"..。

数字值可以是实际数字,也可以是字符串形式的数字,所以像5"5.3""10"这样的值.

例如,->

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
      const number = parseFloat(value);
      if (!isNaN(number)) {
          return NumberValueConverter.prototype.toView(number);
      }

      const date = dayjs(value);
      if (date.isValid()) {
          return DateValueConverter.prototype.toView(value);
      }

但是这段代码不起作用,因为日期字符串如10-10-2020,10-10-2020最终会被解析为10

如果我倒转,则dayjs将10这样的数字转换为有效日期。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-03-18 08:02:41

当给定的字符串以数字开头时,parseFloat已经很高兴了,所以如果您然后对该结果测试isNaN,就会得到假阳性。

因此,不要检查结果是否是数字,而是原始字符串是否代表数字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!isNaN(number)) {

至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!isNaN(value)) {

或者,您可以使用一元加号代替parseFloat,当输入表示一个数字时,该加号只返回一个确定的数字:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const number = +value;

..。然后使用Number.isNaN进行测试是最好的实践。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!Number.isNaN(number)) {
票数 1
EN

Stack Overflow用户

发布于 2021-03-18 08:10:56

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(/^[0-9]+[.]{0,1}[0-9]*$/.test(value)) {
     // Handle your number value
} else {
     // Check for date here
}

可以使用上面的正则表达式来解析数字字符串。

  • /^:指启动字符串
  • $/:指字符串的末尾(
  • 0-9+):字符串的起始值为0到9,最小长度为1
  • 。{0,1}:可以包含0或最多包含1‘.’

<代码>H 1100-9*:字符串末尾可以包含0到9位数。H 211F 212>F 212

票数 1
EN

Stack Overflow用户

发布于 2021-03-18 08:13:18

您可以使用regex测试字符串在映射之前是否像日期。这个正则表达式来自https://www.regextester.com/96683,它测试是否看起来像您传入的日期。

如果事先不知道格式,还有更复杂的regex测试不同格式的日期:https://stackoverflow.com/a/15504877/14948219

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 if(([12]\d{3}/(0[1-9]|1[0-2])/(0[1-9]|[12]\d|3[01])).test(value)){
    return date
 } else if(isNan(value){
    return number
    
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66694653

复制
相关文章
JavaScript如何判断是否为数字?
isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。
全栈程序员站长
2022/09/07
2.6K0
如何判断一个日期是节假日还是工作日
最近的一个微信多客服项目需要判断当前的日期是节假日还是工作日,中国的节假日有点复杂,比如端午中秋这些假期是农历,而十一长假又会有补休,所以很难去简单的去判断,还好最近找到百度 APIStore 的一个 API 可以简单的判断:
Denis
2023/04/15
1.1K0
python 判断字符串是中文还是英文
1、中日韩扩展部首[2E80-2EFF](116字) 2、康熙字典部首[2F00-2FDF](214字) 3、表意文字描述字符[2FF0-2FFF](12字) 4、中日韩笔画[31C0-31EF](37字) 5、中日韩统一表意文字扩展A区[3400-4DBF](6582字) 6、中日韩统一表意文字[4E00-9FFF](20940字) 7、私用区[E000-F8FF](896字) 8、中日韩兼容表意文字[F900-FAFF](471字) 9、中日韩统一表意文字扩展B区[20000-2A6DF](42711字) 10、中日韩统一表意文字扩展C区[2A700-2B73F](4149字) 11、中日韩统一表意文字扩展D区[2B740-2B81F](222字) 12、中日韩统一表意文字增补集[2F800-2FA1F](542字) 13、增补私用A区[F0000-FFFFF](73字)
matinal
2023/10/13
2860
python判断字符串是中文还是英文
1、中日韩扩展部首[2E80-2EFF](116字) 2、康熙字典部首[2F00-2FDF](214字) 3、表意文字描述字符[2FF0-2FFF](12字) 4、中日韩笔画[31C0-31EF](37字) 5、中日韩统一表意文字扩展A区[3400-4DBF](6582字) 6、中日韩统一表意文字[4E00-9FFF](20940字) 7、私用区[E000-F8FF](896字) 8、中日韩兼容表意文字[F900-FAFF](471字) 9、中日韩统一表意文字扩展B区[20000-2A6DF](42711字) 10、中日韩统一表意文字扩展C区[2A700-2B73F](4149字) 11、中日韩统一表意文字扩展D区[2B740-2B81F](222字) 12、中日韩统一表意文字增补集[2F800-2FA1F](542字) 13、增补私用A区[F0000-FFFFF](73字)
周小董
2019/09/06
22.4K0
sqlserver判断字符串是否是数字
sql2005有个函数ISNUMERIC(expression)函数:当expression为数字时,返回1,否则返回0。这只是一个菜鸟级的解决办法,大多数情况比较奏效。
Twcat_tree
2023/10/16
2060
dotnet OpenXML 如何判断是形状还是文本
在 OpenXML 格式里面,其实不存在文本这个元素,所有都是形状。但是在 PPT 界面看到的文本框是什么呢?其实他是特别的形状。而几乎所有的形状都可以输入文本,因此区分形状和文本的意义不会特别大,只是在做解析的时候才会碰到
林德熙
2020/08/31
7380
java判断字符串是否是数字类型[通俗易懂]
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说java判断字符串是否是数字类型[通俗易懂],希望能够帮助大家进步!!!
Java架构师必看
2022/10/24
2.6K0
如何判断是pc端还是移动端
有时候会被别人问起pc端和手机端有什么区别。一般来说都会去说,兼容性啊,适配啊,网页布局这方面的事情,但是我觉得这个问题如果想要拿一个满分应该从区别出发,从如何判断收尾。毕竟你只知道区别没有用,他可能更想让你说出来你是怎么判断的。
江一铭
2022/06/17
2.5K0
如何判断是关闭还是刷新网页
我们在写js代码的时候,经常要判断网页是否被关闭了,如果是被关闭了,就执行某段代码,这个可以用HTML的onbeforeunload事件来执行一段js代码,但是如果网页只是被刷新的话,也同样会触发onbeforeunload事件,下面这段js代码可以判断是否关闭 //判断是关闭还是刷新 if(event.clientX>document.body.clientWidth&&event.clientY<0||event.altKey) {     alert("你关闭了浏览器"); } 这段代码就是判断触发onbeforeunload事件时,鼠标是否点击了关闭按钮,或者按了ALT+F4来关闭网页,如果是,则认为系统是关闭网页,否则在认为系统是刷新网页
源哥
2018/08/28
3K0
javascript判断一个变量是否是数字
其实判断的是有两种需求的,一种是数字或者数字字符串,一种是数值类型,下面分别做一下介绍。
IT工作者
2021/12/28
1.8K0
JavaScript 中如何判断变量是否为数字
JavaScript 是一种动态类型语言,这意味着解释器在运行时确定变量的类型。实际上,这也允许我们在相同的代码中使用相同的变量来存储不同类型的数据。如果没有文档和一致性,我们在使用代码时并不总是知道变量的类型。
前端小智@大迁世界
2020/10/29
2.8K0
html 检测输入是否数字,JavaScript怎么判断输入是否是数字?
JavaScript进行表单操作时,很多时候需要判断输入的内容是否为数字。JavaScript判断输入内容是否为数字的方法很多,下面本篇文章就来给大家介绍几种方法,希望对大家有所帮助。
全栈程序员站长
2022/09/10
3.9K0
html 检测输入是否数字,JavaScript怎么判断输入是否是数字?
Python判断输入的字符串是否是整数还是小数
           不是的话说明是字母或者是小数,然后判断是否是小数,如果是小数的话返回1,
matinal
2023/10/13
4900
java判断字符串是公司还是人名的工具类
一个字符串,判断是公司,还是人的名字,下面的方法是依靠穷举,然后用关键词和目标串匹配做判断。可能会有遗漏的,但是目前没有找到什么更好的方法。
IT云清
2019/01/22
1.5K0
如何判断输入日期是当年中的第几天
针对如何判断输入日期是当年中的第几天的问题,提出用if函数的方法,通过判断月是否输入正确,年是闰年还是平年的实验,证明该方法是有效的,本文的方法有方法单一,简单。未来探索更多方法。
算法与编程之美
2023/08/22
2170
如何判断输入日期是当年中的第几天
JAVA判断当前日期是否是工作日,还是节假日
在使用hutool工具包的时候,发现hutool工具包无法判断是否是工作日还是节假日(因为每年节假日各不相同,所以自己写了一个) 当前只有2021年的数据,后续的数据需要等国务院发布 节假日数据来源:国务院办公厅关于2021年部分节假日安排的通知
卢衍飞
2023/02/16
2.2K0
判断今年是平年还是闰年
Scanner sc = new Scanner(System.in); //接收数据
算法与编程之美
2023/01/03
8010
判断今年是平年还是闰年
python获取日期和判断字符串
# Filename : util.py # author by gulf # 引入 datetime 模块 import datetime #获取昨天日期 def getYesterday(): today=datetime.date.today() oneday=datetime.timedelta(days=1) yesterday=today-oneday return yesterday # 判断字符串是否是数字 def is_number(s
用户1220053
2018/03/29
1.5K0
python获取日期和判断字符串
Java_util_02_Java判断字符串是中文还是英文
做微信开发,使用百度翻译API时,需要指定译文的语种。这就需要我们判断待翻译内容是中文还是英文,若是中文,则翻译成英文,若是英文则翻译成中文。
shirayner
2018/08/10
1.6K0
点击加载更多

相似问题

bash --如何判断变量是字符串还是数字

26

如何判断数字是浮点型还是整型

41

如何判断批处理变量是文本还是数字?

517

如何判断obj是jquery还是纯javascript

51

确定字符串是日期还是数字

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文