我只想知道正则表达式验证在javascript中是如何工作的。
说我有“测试”这个词,我想用正则表达式“/ [A-Za-z] /”测试它,看看它是否只是文本。
它会返回true还是false?
我问这个是因为术语“找到一个匹配”被大量使用,所以我想知道它是否在找到匹配时返回true(即找到一个不应该存在的字符)。
由于
答案 0 :(得分:5)
如果要检查整个字符串是否只是字母,请执行以下操作
if (theString.match(/^[A-Za-z]+$/)) {
// It's only text
}
此处使用^
和$
非常重要,可以防止输入部分匹配。
答案 1 :(得分:2)
评估为true或false将取决于您的正则表达式。
在您的示例中,如果您要测试的字符串包含至少一个小写或大写字符,/[A-Za-z]/
将返回true。
如果您想测试一个字符串只包含字母,那么您的正则表达式必须测试该字符串中的所有字符,例如^[a-zA-Z]+$
答案 2 :(得分:1)
说我有“测试”这个词,我想用正则表达式来测试它 “/ [A-Za-z] /”查看它是否只是文本。
它会返回true还是false?
假设您使用JavaScript match()方法运行正则表达式,您的正则表达式将返回 true 。
正则表达式不足以完全测试整个字符串是否包含文本。首先,你对文本的定义是什么?字母数字?空格和标点怎么样?
当正则表达式包含第一个匹配项时,它将返回true,除非您指定全局运算符。
在您的情况下,您正在搜索单个字母字符,这不区分大小写。因此,您的单词“test”将返回true,因为第一个字母“t”与正则表达式匹配。
对于以下内容,您的正则表达式也将返回true:
test123 Test!@# t'is This is a sentence with 6 words
如果要匹配整个字符串,则正则表达式必须包含^
和$
符号,以表明您要匹配整个字符串,并使用+
符号表明你允许多个字符。
答案 3 :(得分:1)
正则表达式返回的内容取决于正则表达式。我会给你控制台的输出,它可以让你大致知道它返回的内容,具体取决于表达式:
var sampleString = 'someString';
// Search for only 1 or more characters
sampleString.match(/[a-zA-Z]+/);
>> ["someString"]
// Search for single characters
sampleString.match(/[a-zA-Z]/g);
>> ["s", "o", "m", "e", "S", "t", "r", "i", "n", "g"]
// Search for single digits - none to be found, returns null
sampleString.match(/[0-9]/g);
>> null
要获得结果为false的结果,您需要使用RegExp对象。看一下下面的例子。
var sampleString = 'someString';
// Note that the expression isn't between slashes, and the extra argument for flags
var regexp = new RegExp('[a-zA-Z]+', 'g');
// using regexp object, things go the other way around
regexp.test(sampleString);
>> true
答案 4 :(得分:1)
由于问题是关于 javascript 正则表达式,因此所有答案都表示匹配时返回true
是错误的。正确的是javascript match()
方法
返回匹配数组,如果未找到匹配项,则返回null。
答案 5 :(得分:1)
这取决于你如何使用正则表达式。
假设您只是测试字符串只包含字母字符,那么这应该可以正常工作
function validateAlpha(s){
return (!s.match(/[^A-Za-z]/));
}
//Usage
var isValid = validateAlpha("test");
注意正则表达式中的“^”。这表示如果有任何角色不属于该范围,那么就有匹配。在这种情况下,我们反转(!)它以返回它是否有效。
所以回答你的问题,是的,String.match函数如果找到匹配则返回true,否则如果使用了捕获括号,它将返回匹配数组。