正则表达式--正负整数
参考 https://www.cnblogs.com/yibuyi-123/p/14661160.html
BOOL CheckNumValid(CString strIn) { wstring szName = strIn.GetBuffer(); strIn.ReleaseBuffer(); std::wregex reg(L"^-?(([1-9]+\\d*)|(0{1}))(\\.\\d{1,2})?"); //正负数,最多两位小数 std::wsmatch result; BOOL bIsValid = regex_match(szName, result, reg); if (!bIsValid) { msgbox(L"请输入规范的数字(最多两位小数)!"); } return bIsValid; }
主要满足几点要求:
1、保留两位小数
2、允许负数(如果你不想要负数,看着图把负数开头的分支砍掉就可以),正数不需要“+”号表示;不允许-0(或-0.0,-0.00)
3、整数部分,值如果是0,不允许重复这个0(如000,00),如果值不是0,不允许以0开头(如01,001)
wstring szName = strName.GetBuffer(); strName.ReleaseBuffer(); std::wregex reg(L"^[a-zA-Z_0-9\u4e00-\u9fff]+$"); //字母、数字、下划线、汉字 std::wsmatch result; BOOL bIsValid = regex_match(szName, result, reg); if (!bIsValid) { msgbox(L"不能输入除下划线_以外的特殊字符!"); return; }