是否可以编写一个匹配所有仅包含数字的字符串的正则表达式?如果我们有这些字符串:
它应该匹配前四个,但不是最后一个。我试图在RegexBuddy中使用前瞻和东西来摆弄,但我似乎无法弄明白。
答案 0 :(得分:39)
(?!^\d+$)^.+$
这表示不包含所有数字且与整行匹配的行的前瞻。
答案 1 :(得分:10)
除非我遗漏了什么,否则我认为最简洁的正则表达式是......
/\D/
...或换句话说,字符串中是否有非数字?
答案 2 :(得分:7)
/^\d*[a-z][a-z\d]*$/
可以是开头的数字,然后至少一个字母,然后是字母或数字
答案 3 :(得分:7)
jjnguy在earlier revision中将其更正(如果稍微多余)。
.*?[^0-9].*
@Chad,你的正则表达式,
\b.*[a-zA-Z]+.*\b
应该允许非字母(例如,标点符号),即使Svish的例子不包括一个。 Svish的主要要求是:并非所有都是数字。
\b.*[^0-9]+.*\b
然后,你不需要+,因为所有你需要的是保证在那里有一个非数字(更多可能在那里,由两端的。*覆盖)。
\b.*[^0-9].*\b
接下来,您可以取消两端的\ b,因为这些是不必要的约束(调用对alphanum和_的引用)。
.*[^0-9].*
最后,请注意,最后一个正则表达式表明问题可以通过基础知识解决,这些基础知识已存在数十年(例如,不需要预见功能)。在英语中,问题在逻辑上等同于简单地要求在字符串中找到1个反例例字符。
我们可以在浏览器中测试此正则表达式,方法是将以下内容复制到位置栏中,将字符串“6576576i7567”替换为您要测试的内容。
javascript:alert(new String("6576576i7567").match(".*[^0-9].*"));
答案 4 :(得分:4)
试试这个:
/^.*\D+.*$/
如果有任何simbol,则返回true,这不是数字。适用于所有语言。
答案 5 :(得分:3)
由于您说“匹配”,而不仅仅是验证,以下正则表达式将正确匹配
\b.*[a-zA-Z]+.*\b
通过测试:
abc
a4c
4bc
ab4
1b1
11b
b11
测试失败:
123
答案 6 :(得分:2)
如果你想匹配至少有一个字母的世界,但它们是由数字和字母(或只是字母)组成的,那就是我用过的:
(\d*[a-zA-Z]+\d*)+
答案 7 :(得分:0)
如果我们想限制有效字符,以便可以从一组有限的字符中创建字符串,请尝试以下操作:
(?!^\d+$)^[a-zA-Z0-9_-]{3,}$
或
(?!^\d+$)^[\w-]{3,}$
/ \ W + /: 匹配任何字母,数字或下划线。任何单词字符
答案 8 :(得分:0)
.*[^0-9]{1,}.*
适合我们。
我们想要使用已使用的答案,但它在YANG模型中不起作用。
我在这里提供的那个很容易理解,而且很清楚: start和end可以是任何字符,但是,但必须至少有一个非数字字符,这是最好的。
答案 9 :(得分:0)
我在JavaScript代码中使用/^[0-9]*$/gm
来查看字符串是否只是数字。如果是,那么它应该失败,否则它将返回字符串。
以下是包含测试用例的工作代码段:
function isValidURL(string) {
var res = string.match(/^[0-9]*$/gm);
if (res == null)
return string;
else
return "fail";
};
var testCase1 = "abc";
console.log(isValidURL(testCase1)); // abc
var testCase2 = "a4c";
console.log(isValidURL(testCase2)); // a4c
var testCase3 = "4bc";
console.log(isValidURL(testCase3)); // 4bc
var testCase4 = "ab4";
console.log(isValidURL(testCase4)); // ab4
var testCase5 = "123"; // fail here
console.log(isValidURL(testCase5));
答案 10 :(得分:0)
我必须在MySQL中做类似的事情,而以下内容对我来说似乎很简单:
其中,字段名regexp ^[a-zA-Z0-9]+$
和字段名NOT REGEXP ^[0-9]+$
这将显示所有字母和字母数字字段,但任何数字字段均被隐藏。这似乎可行。
示例:
名称1-显示
名称-显示的
name2-显示
name3-显示
name4-显示
n4ame-显示
324234234-未显示