English 中文(简体)
• 定期表达调查结果。
原标题:regular expression for finding decimal/float numbers?

i need a regular expression for decimal/float numbers like 12 12.2 1236.32 123.333 and +12.00 or -12.00 or ...123.123... for using in javascript and jQuery. Thank you.

最佳回答

选择性地配对+或——在开始时,先是一位或数位精干的数位数,然后是一位精干的数位数和一个或数位精度的数位数。

/^[+-]?d+(.d+)?$/

http://regexpal.com/?flags=gm&regex=%5E%5B%2b-%5D?%5Cd%2b%285C.%5Cd%2b%2b%29?$%0A&input=All%20these%20match:%0A%0A%0A12.2%0A1236.32%0A123.30A%2b-12.00A%0A%0%0A%0%

问题回答

The right expression should be as followed:

[+-]?([0-9]*[.])?[0-9]+

申请:

+1
+1.
+.1
+0.1
1
1.
.1
0.1

这里的例子就是:

import re
#print if found
print(bool(re.search(r [+-]?([0-9]*[.])?[0-9]+ ,  1.0 )))
#print result
print(re.search(r [+-]?([0-9]*[.])?[0-9]+ ,  1.0 ).group(0))

产出:

True
1.0

如果你使用mac,你可以检查指挥线:

python -c "import re; print(bool(re.search(r [+-]?([0-9]*[.])?[0-9]+ ,  1.0 )))"

python -c "import re; print(re.search(r [+-]?([0-9]*[.])?[0-9]+ ,  1.0 ).group(0))"

您可以核对文本的确认,而且只有1个精准点的验证,即NaN

var val = $( #textbox ).val();
var floatValues =  /[+-]?([0-9]*[.])?[0-9]+/;
 if (val.match(floatValues) && !isNaN(val)) {
  // your function
}

对任何人来说:

我为之做了一次科学论文的登记:(与全方位相匹配)

const floatR = /^[+-]?(?:[0-9]+(?:.[0-9]+)?|.[0-9]+)(?:[eE][+-]?[0-9]+)?$/;

floatR.test("-2.3E23"); //=> true
floatR.test("-2.E");    //=> false
floatR.test("  2  ");   //=> false

If you prefer to use Unicode numbers, you could replace all [0-9] by d in the RegExp.
And possibly add the Unicode flag u at the end of the RegExp.

For a better understanding of the pattern see https://regexper.com/.
And for making RegExp, I can suggest https://regex101.com/.

EDIT:

EDIT2:虽然有人特别要求登记,但可以直接在联合材料中查证:

/**
 * ## Parse {@linkcode str} to number
 * @param {string} str - the string to parse
 * @returns {number | null} the parsed number or `null` if not-a-number
 */
const parseNum = str => Number.isNaN(str = Number(str)) ? null : str;

parseNum("123.12345678E+3") ?? 1; //=> 123123.45678
parseNum("80F") ?? 1;             //=> 1

Converting the string to a number (or NaN) with Number()
then checking if it is NOT NaN with !Number.isNaN()

EDIT3:我发现另一个冷却场:见

EDIT 4: 如果你想要排除铅/tra0使用以下手段:

// Exclude leading but not trailing 0s
const floatR_L = /^[+-]?(?:[1-9][0-9]*(?:.[0-9]+)?|.[0-9]+)(?:[eE][+-]?[1-9][0-9]*)?$/;

// Exclude leading and trailing 0s
const floatR_LT = /^[+-]?(?:[1-9][0-9]*(?:.[0-9]*[1-9])?|.[0-9]*[1-9])(?:[eE][+-]?[1-9][0-9]*)?$/;

此外,在 Java,数字可以强调数字分离器,因此,为了完整起见,数字应当与任何有效的联合数字相匹配:

// Allow _ as separator, leading/trailing dot and 0s, and test for prefix 0b (binary), 0o (octal), and 0x (hexadecimal)
const numR = /^[+-]?(?:0[bB][01](?:_?[01]+)*|0[oO][0-7](?:_?[0-7]+)*|0[xX][0-9a-fA-F](?:_?[0-9a-fA-F]+)*|(?:[0-9](?:_?[0-9]+)*(?:.(?:[0-9](?:_?[0-9]+)*)?)?|.[0-9](?:_?[0-9]+)*)(?:[eE][+-]?[0-9](?:_?[0-9]+)*)?)$/;

numR.test("007.123e+0_1"); //=> true
numR.test("-0xAbc");       //=> true
numR.test("+0x00F");       //=> true
numR.test("0b0010_1010");  //=> true
numR.test("2.");           //=> true
numR.test(".2");           //=> true
numR.test("00.");          //=> true
numR.test("  2  ");        //=> false
numR.test("2_");           //=> false
numR.test("2._2");         //=> false

注:由于某些排气管重新作为未填入的字面处理(<0>代码>)。

www.un.org/spanish/ecosoc 这是一个老的职位,但这是对“浮动点的经常表述”或像这种方式那样做的最主要搜索结果,没有回答问题。 页: 1 我在做这项工作时将分享我的结果,这样,下一位在座的人就不必为自己做工作。

All of the answers thus far accept a leading 0 on numbers with two (or more) digits on the left of the decimal point (e.g. 0123 instead of just 123) This isn t really valid and in some contexts is used to indicate the number is in octal (base-8) rather than the regular decimal (base-10) format.

这些表述也接受一种精度的缩略语(.14,而不是0.14,或无微小部分(3.,而不是3.0)。 在一些方案方面(包括 Java),这一点是有效的,但我想解一下(因为出于我的目的,这些错误可能比故意错误)。

“科学标志”如<条码>1.234E7

/^(-)?

或者如果你真想接受一个主要<代码>+,那么:

/^((+-)? (0)([1-9][0-9]*)([0-9]+)$/

我认为,定期表达将严格检验典型的惯性激化或mal式浮动点。

相应:

  • $1 contains the full number that matched
  • $2 contains the (possibly empty) leading sign (+/-)
  • $3 contains the value to the left of the decimal point
  • $5 contains the value to the right of the decimal point, including the leading .

我通过“限制”表示,数字必须是你正在检测的唯一东西。

如果你想从包含其他内容的插图中仅提取浮动值:

/((<><>>>0>[1-9][0-9]*)([0-9]+)/

将在<代码>中找到<代码>-3.14> ,“否定式复制件大约为-3.14>>>> /code>或(-3.14)“ 等。

编号组别的意思与上文相同(但<代码>2现为无主要标志的空档(>>)。

但是,人们知道,它也将努力提取它能够找到的任何数字。 例如,它将从<代码>127.0.0.1中提取<>127.0。

如果你想要比那时更精练,我认为你可能希望研究的是灵活的分析,而不是经常表达。 I m guessing one can make a look-ahead-based expression that will recognized that Pi is 3.14 contained aroting Point number but 家庭是127.0.0.1。 不是,但最复杂。 如果您的格局取决于其之后的特性,以非维系的方式,你就开始在固定的言辞中冒险。

保罗普惠制和酒吧每周的答复使我得以这样做:

re=/^[+-]?(?:d*.)?d+$/;
>> /^[+-]?(?:d*.)?d+$/

re.exec("1")
>> Array [ "1" ]

re.exec("1.5")
>> Array [ "1.5" ]

re.exec("-1")
>> Array [ "-1" ]

re.exec("-1.5")
>> Array [ "-1.5" ]

re.exec(".5")
>> Array [ ".5" ]

re.exec("")
>> null

re.exec("qsdq")
>> null

www.un.org/spanish/ecosoc 这里是我的js 方法,处理0s , 载体

1- ^0[0-9]+.?[0-9]*$ : will find numbers starting with 0 and followed by numbers bigger than zero before the decimal seperator , mainly ".". I put this to distinguish strings containing numbers , for example, "0.111" from "01.111".

2-([1-9]{1}[0-9]? 如果从0开始就进行扼杀,则将考虑到大于0的部分。 此处使用的是母体,因为我只想捕捉符合规范的部分。

3-([0-9]<>>>? [0-9]:仅能抓住扼杀的精髓部分。

在Javascript ,pin.match (regex)中,首先包含部分内容的返回阵列。 我将这一方法用于“死板”的输入要素,即,如果用户进入某种违反舱面而不是违反部分内容的物品,则其价值完全没有显示,但如果部分内容符合规定,则其价值不变。

const floatRegexCheck = (st) => {
    const regx1 = new RegExp("^0[0-9]+\.?[0-9]*$"); // for finding numbers starting with 0
    let regx2 = new RegExp("([1-9]{1}[0-9]*\.?[0-9]*)"); //if regx1 matches then this will remove 0s at the head. 
    if (!st.match(regx1)) { 
        regx2 = new RegExp("([0-9]*\.?[0-9]*)"); //if number does not contain 0 at the head of string then standard decimal formatting takes place
    }
    st = st.match(regx2);
    if (st?.length > 0) {
        st = st[0];
    }
    return st;
}

如果您希望通过<代码>e开展工作,则使用这一表述:

[+-]?[0-9]+([.][0-9]+)?([eE][+-]?[0-9]+)?

Here的一个范例:

var re = /^[+-]?[0-9]+([.][0-9]+)?([eE][+-]?[0-9]+)?$/;

console.log(re.test( 1 ));
console.log(re.test( 1.5 ));
console.log(re.test( -1 ));
console.log(re.test( -1.5 ));
console.log(re.test( 1E-100 ));
console.log(re.test( 1E+100 ));
console.log(re.test( .5 ));
console.log(re.test( foo ));

这里的答案更为严格。

^[+-]?0(?![0-9]).[0-9]*(?![.])$|^[+-]?[1-9]{1}[0-9]*.[0-9]*$|^[+-]?.[0-9]+$

下面的数值将相应(+-标号也可行)

.11234
0.1143424
11.21
1.

以下数值不匹配:

00.1
1.0.00
12.2350.0.0.0.0.
.
....

www.un.org/spanish/ecosoc 如何运作

?

不要让与逻辑OR运营商一样的运营商 break碎 。

^[+-]?0(?![0-9]).[0-9]*(?![.])$

这一节制将从0美元开始检查价值。

第一张支票+和——以0或1个时间签署<代码>[+-]

然后检查一下它是否领导了零0

如果它有的话,那么,由于我们不希望看到00.123(?![0-9]),那么它的下一个价值决不能是零。

然后,只检查一分钟,用无限制的数码时间检查部分。 [0-9]∗

最后,如果它有一部分没有遵循,我们就抛弃了它。

Now see the second part

^[+-]?[1-9]{1}[0-9]*.[0-9]*$

www.un.org/french/ecosoc

如果从非零开始,则与第一个数字完全吻合一个时间,并随附无限制的时间。

只好一次,无限制的数位数沿用<代码>。 [0-9]*

www.un.org/spanish/ecosoc 现在见第三部分

^[+-]?.{1}[0-9]+$

这将从12、34565美元等开始检查价值。

www.un.org/french/ecosoc

取而代之的是<代码>。 [0-9]+





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.

热门标签