How to Check If A String Is a Number (Numeric) using Regex (C++/
- 时间:2020-09-18 17:26:09
- 分类:网络文摘
- 阅读:124 次
Validate if a given string can be interpreted as a decimal number.
Some examples:
“0” => true
” 0.1 ” => true
“abc” => false
“1 a” => false
“2e10″ => true
” -90e3 ” => true
” 1e” => false
“e3″ => false
” 6e-1″ => true
” 99e2.5 ” => false
“53.5e93″ => true
” –6 ” => false
“-+3” => false
“95a54e53” => falseNote: It is intended for the problem statement to be ambiguous. You should gather all requirements up front before implementing one. However, here is a list of characters that can be in a valid decimal number:
Numbers 0-9
Exponent – “e”
Positive/negative sign – “+”/”-”
Decimal point – “.”
Of course, the context of these characters also matters in the input.
In Javascript, you can convert a string to number using the Number constructor – which returns a NaN if it is not a valid number. Thus, the following Javascript code tests if a number is numeric:
1 2 3 4 5 6 7 8 9 | /** * @param {string} s * @return {boolean} */ var isNumber = function(s) { s = s.trim(); if (!s) return false; return !isNaN(Number(s)); }; |
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
s = s.trim();
if (!s) return false;
return !isNaN(Number(s));
};The empty string or the whitespace-only strings will be converted to zeros, thus, those white-space values need to be exclusively checked.
1 2 | Number("") // 0 Number(" ") // 0 |
Number("") // 0
Number(" ") // 0Regular Expression to Validate a Number String
The regex pattern is: ^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))(e[-+]?\d+)?\s*$ Thus, in Javascript to test a string against a regex pattern:
1 2 3 4 5 6 7 | /** * @param {string} s * @return {boolean} */ var isNumber = function(s) { return /^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))(e[-+]?\d+)?\s*$/.test(s); }; |
/**
* @param {string} s
* @return {boolean}
*/
var isNumber = function(s) {
return /^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))(e[-+]?\d+)?\s*$/.test(s);
};Or in C++:
1 2 3 4 5 6 7 8 9 | #include <regex> regex r(R"(^^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))(e[-+]?\d+)?\s*$)"); class Solution { public: bool isNumber(const string& s) { return regex_match(s, r); } }; |
#include <regex>
regex r(R"(^^\s*[-+]?((\d+(\.\d+)?)|(\d+\.)|(\.\d+))(e[-+]?\d+)?\s*$)");
class Solution {
public:
bool isNumber(const string& s) {
return regex_match(s, r);
}
};Please note the regex library needs to be included in order to use the regex_match function in C++.
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:Blog Stalkers: Staying Safe Online How Social Media Paid Ads Can Boost Blog Post Promotion Are You Focused Enough To Freelance? 4 Tips For Bloggers The Secure Shell (SSH) Chrome Extension developed by Google The Valid Mountain Array Algorithm Recovery Models in SQL Server The Algorithm to Construct the Rectangle Given Its Area How to Find Positions of Large Groups using Two Pointer Algorith IPv6 Is Dominant, But Has The World Actually Moved On? How to Find the Town Judge using Graph Algorithm?
- 评论列表
-
- 添加评论