如何创建正则表达式以接受不超过10位数?

use*_*027 9 regex validation

如何创建正则表达式以接受不超过10位数?

谢谢

drd*_*man 25

既然你问过"怎么样",我会尝试一步一步解释.因为您没有指定使用哪种正则表达式,所以我将提供PCRE两个POSIX正则表达式变体的示例.

对于像这样的简单情况,你应该考虑自动化的正则表达式,一次接受一个字符,并且无论何时它是有效的(接受字符).在每个字符之后,您可以指定量词可能出现的次数,例如(在PCRE方言中)*(零次或多次),+(一次或多次)或{n ,m}(从nm次).然后施工过程变得简单:

PRCE  | B.POSIX | E.POSIX   | Comments
------+---------+-----------+--------------------------------------------------
^     | ^       | ^         | Unless you are going to accept anything with 10
      |         |           | digits in it, you need to match start of data;
\d    | [0-9]   | [:digit:] | You need to match digits;
{1,10}| \{1,10\}| {1,10}    | You have to specify there is from 1 to 10 of them.
      |         |           | If you also wish to accept empty string — use 0;
$     | $       | $         | Then, data should end (unless see above).
Run Code Online (Sandbox Code Playgroud)

因此,结果是^\d{1,10}$,^[0-9]\{1,10}\$^[:digit:]{1,10}$分别.


ink*_*dmn 6

^\d{1,9}$
Run Code Online (Sandbox Code Playgroud)

这将匹配1位数到9位的任何数字.

由于您没有指定正在使用的正则表达式,这应该可以让您到达所需的位置.如果没有,请告诉我们您正在使用哪种正则表达式技术.


Jer*_*yth 5

/\D\d{0,10}\D/ (假设"小于"包括0)

/\D\d{1,10}\D/ (如果你想要1到10位数字)