惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Security Latest
Security Latest
Recorded Future
Recorded Future
人人都是产品经理
人人都是产品经理
S
SegmentFault 最新的问题
Hacker News - Newest:
Hacker News - Newest: "LLM"
C
CXSECURITY Database RSS Feed - CXSecurity.com
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Know Your Adversary
Know Your Adversary
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
量子位
L
LINUX DO - 热门话题
L
Lohrmann on Cybersecurity
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tor Project blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
V
Visual Studio Blog
T
Threatpost
T
Tenable Blog
有赞技术团队
有赞技术团队
大猫的无限游戏
大猫的无限游戏
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
C
Cisco Blogs
H
Heimdal Security Blog
Attack and Defense Labs
Attack and Defense Labs
A
About on SuperTechFans
Last Week in AI
Last Week in AI
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
Intezer
V
V2EX
Cyberwarzone
Cyberwarzone
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
B
Blog RSS Feed
V
Vulnerabilities – Threatpost
N
Netflix TechBlog - Medium
T
The Blog of Author Tim Ferriss
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
PCI Perspectives
PCI Perspectives
P
Privacy International News Feed
D
Docker

博客园 - Insus.NET

User Profile Service 服务未能登录 Visual Studio2026创建Vue项目 安装与配置node.js HTTP Error 403.14 - Forbidden VisualStudio2026回滚上一版本 消息认证码(加强) 网站无法使用插值字符串语法 HMAC(Hash-based Message Authentication Code)认证示例 浏览器自动发送域凭据 企业内小网站兼用Windows验证登录 访问用户控件的函数 onblur事件改为监听处理 将警报消息改为吐司消息 内容有无变化OnBlur即时更新引起的问题与解决 混合式提高用户编辑与操作效率 光标离开文框后即刻更新 WebForm实现Web API JavaScript对GridView删除行后并重新给其数据绑定 把CS值传给JS使用 v2 确认信息confirm由C#后端移至javascript前端 无法发布网站Web Site 点击单元格弹出窗口处理数据返回父页 GridView数据控件中实现单选功能 文本框输入完后直接按回车提交数据 GridView对行进行全选或单选 TextBox文本框允许用户输入正或负小数 用户单击文本并复制至剪帖板 Vue3格式化日期时间与插值 SQL Server中验证大小字母和数字 MS SQL Server 数据加密与解密实例 相册由原来Lightbox升级至Vue2瀑布流 从Visual Studio 2022升级至Visual Studio 2026 报表应用图表charts显示数据 钉钉(DingTalk)免登录 Upgrade Outlook Connector 程序中真实应用SignalR Web API路径与IIS站点应用程序名或虚拟目录 在您可以登录前,此副本的 Windows 必须被 Microsoft 激活。您想现在激活它吗 电脑系统由Win10降级Win7折腾还是折腾 System.ComponentModel.Win32Exception: Access is denied
JavaScript判断字符是否为decimal
Insus.NET · 2026-04-09 · via 博客园 - Insus.NET

在C#语言环境下,可以使用

string xxx = "123.45";
decimal dec;
if (decimal.TryParse(xxx, out dec)) //返回 true or false
{
    // true, do some thing.
}
else
{
    //false, do some thing.
}

但是,如果在javascript语境中呢?你是可以参考下面函数来实现:
2026-04-09_15-53-24

function isDecimal(str) {
    // 去除首尾空格
    str = str.trim();
    // 空字符串不算有效数字
    if (str === "") return false;
    // 使用 parseFloat 尝试转换
    let num = parseFloat(str);
    // 检查转换结果是否为有效数字,并且要求字符串必须**完全**表示该数字(避免 "123abc" 之类)
    return !isNaN(num) && /^-?\d+(?:\.\d+)?$/.test(str);
}

View Code

实例:

var sjz= document.getElementById('<%= HiddenFieldShiJiZhi.ClientID %>').value;
var metric = isDecimal(sjz) ? parseFloat(sjz).toFixed(8).replace(/\.?0+$/, '') : sjz;

以上实现,判断字符串是否为decimal?
如果是,把小数点后最后一数字后的0去除。
如果非decimal,返回原字符串。

其实,在数据库,如MS SQL Server还会需要判断的。
在新版本如2012+可以使用,TRY_CAST和TRY_CONVERT

如果您的SQL Server版本较低,得想想一个替代方案?或者
升级数据库兼容级别(ALTER DATABASE ... SET COMPATIBILITY_LEVEL = 160)来完整支持新函数。

以下内容于2026/4/10 10:37补充
2026-04-10_10-38-59

-- =============================================
-- Author:        leo yeung  
-- Create date: 2026-04-10
-- Description:    判断字符串是否为decimal
-- =============================================
CREATE FUNCTION [dbo].[svf_IsDecimal] 
(
    @Str NVARCHAR(100)
) RETURNS BIT
AS
BEGIN
    DECLARE @Result BIT = 0
    SET @Str = LTRIM(RTRIM(@Str))  -- 去除首尾空格

    -- 空字符串直接返回 0
    IF LEN(@Str) = 0
        RETURN 0

    -- 使用 CASE 进行逐层校验(比 AND 链更清晰)
    IF (
        -- 1. 基本格式正则(不允许前导/后导空格、只允许数字、可选负号、可选小数点、小数部分必须有数字)
        @Str LIKE '[+-]%'       -- 可选正负号开头
        OR @Str LIKE '[0-9]%'   -- 或者数字开头
    )
    AND @Str NOT LIKE '%[^-+0-9.]%'   -- 只允许数字、负号、正号、小数点
    AND @Str NOT LIKE '%[+-]%[+-]%'   -- 只允许一个正/负号,且必须在开头
    AND CHARINDEX('.', @Str) <= 1     -- 小数点最多一个,且不能出现在正负号之前
    AND LEN(@Str) - LEN(REPLACE(@Str, '.', '')) <= 1  -- 确保小数点个数 <=1
    AND (
        CHARINDEX('.', @Str) = 0      -- 没有小数点时,全部是数字(可能有正负号)
        OR (
            CHARINDEX('.', @Str) > 0
            AND LEN(SUBSTRING(@Str, CHARINDEX('.', @Str) + 1, LEN(@Str))) >= 1  -- 小数部分至少一位
            AND CHARINDEX('.', @Str) > CASE WHEN @Str LIKE '[+-]%' THEN 2 ELSE 1 END  -- 整数部分至少一位
        )
    )
    AND @Str NOT LIKE '%[^0-9]%'      -- 去除正负号和小数点后,剩下全是数字
    BEGIN
        SET @Result = 1
    END

    -- 可选:进一步排除科学计数法(如果担心 '1E2' 等,但上面的正则已经排除 E)
    IF CHARINDEX('E', UPPER(@Str)) > 0
        SET @Result = 0

    RETURN @Result
END

View Code


另外一个版本,可供参考,
2026-04-10_10-49-11

 
-- =============================================
-- Author:        leo yeung  
-- Create date: 2026-04-10
-- Description:    判断字符串是否为decimal
-- =============================================
 CREATE FUNCTION [dbo].[svf_IsDecimal]
(
    @number NVARCHAR(100)
)
RETURNS BIT
AS
BEGIN
    SET @number = LTRIM(RTRIM(@number))
    IF @number = '' OR @number IS NULL
        RETURN 0

    -- 排除科学计数法(含 E 或 e)
    IF UPPER(@number) LIKE '%E%'
        RETURN 0

    -- 利用 ISNUMERIC + 'e0' 技巧快速过滤大多数非法格式
    IF ISNUMERIC(REPLACE(REPLACE(@number, '+', 'A'), '-', 'A') + 'e0') = 0
        RETURN 0

    -- 额外排除仅包含正负号或小数点的情况
    IF @number IN ('.', '+', '-', '+.', '-.')
        RETURN 0

    -- 排除多个小数点、小数点位置不正确等(可选,上述 e0 已经能拦截大多数)
    IF LEN(@number) - LEN(REPLACE(@number, '.', '')) > 1
        RETURN 0
    RETURN 1
END
GO

View Code