How to Check If A String Is a Number (Numeric) using Regex (C++/
- 时间:2020-09-18 17:26:09
- 分类:网络文摘
- 阅读:134 次
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) —
推荐阅读:5 Simple Steps to Create Great Video Content for a Blog Best Practices for Blogging Securely 5 Tips to Make Sure Your Blogs Works on Every Browser Learn from Business Entrepreneurs Who Take the Time to Train Oth The Story Of Aaron Swartz And How His Death Could Change Compute Smart Finance Tips for Bloggers 8 Ways to Build Up Seed Money to Turn Your Blog into a Business Apple Reveals ARKit At WWDC Blogging From the Road: Japan Edition How to Redesign Your Blog for Improved User Experience
- 评论列表
-
- 添加评论