即时通讯只是想知道正则表达式验证如何在JavaScript中工作。快速正则表达式和JavaScript查询
说我有“测试”这个词,我想用正则表达式“/ [A-Za-z] /”来测试它,看它是否只是文本。
它是否返回true或false?
我问这是因为术语“找到一个匹配”用了很多,所以即时通讯想知道,如果它发现匹配时返回true(即找到一个不应该在那里的字符)。
感谢
即时通讯只是想知道正则表达式验证如何在JavaScript中工作。快速正则表达式和JavaScript查询
说我有“测试”这个词,我想用正则表达式“/ [A-Za-z] /”来测试它,看它是否只是文本。
它是否返回true或false?
我问这是因为术语“找到一个匹配”用了很多,所以即时通讯想知道,如果它发现匹配时返回true(即找到一个不应该在那里的字符)。
感谢
如果你想检查是否整个字符串只有字母然后执行以下操作
if (theString.match(/^[A-Za-z]+$/)) {
// It's only text
}
采用^
和$
在这里很重要,以防止在输入部分匹配。
它评估为真或假将取决于您的正则表达式。
在你的例子中,如果你测试的字符串至少包含一个小写或大写字符,那么/[A-Za-z]/
将返回true。
如果你想测试一个字符串只包含字母,正则表达式必须在该字符串测试所有的字符,如在^[a-zA-Z]+$
明白了,所以当它发现一个不该在那里的角色时它会返回错误! – TheGateKeeper
这就是要点!在这种情况下,即使空白也算作无效。 –
说我有“测试”一词,我想测试一下使用正则表达式 “/ [A-Za-z] /”来查看它是否仅为文本。
它是否返回true或false?
假设你正在使用JavaScript match()方法来运行你的正则表达式,您正则表达式将返回真正。
正则表达式不足以完全测试整个字符串是否包含文本。首先,你对文本的定义是什么?字母数字?空间和标点怎么样?
当正则表达式包含第一个匹配时,它将返回true,除非指定了全局运算符。
对于您的情况,您正在搜索单个字母字符,这是不区分大小写的。因此,您的单词“test”将返回true,因为第一个字母“t”与正则表达式匹配。
你的正则表达式也将下列返回true:
test123 [email protected]# t'is This is a sentence with 6 words
如果你想整个字符串匹配,你的正则表达式必须包括^
和$
符号表明要匹配整个字符串,并使用+
符号来显示您允许多个字符。
为什么它会在test123上返回true?它包含数字 – TheGateKeeper
“您的正则表达式正在搜索单个字母字符”,因此它与第一个字符相匹配,并且会在整个字符串上返回一个真正的匹配结果。 –
我明白了,谢谢。因此,如果我使用“/^[a-zA-Z] + $ /”如下所示,为什么输入仍像“123456”那样返回true? – TheGateKeeper
正则表达式返回的内容取决于正则表达式。我给你我的控制台的输出,这应该给你一个什么样返回,根据表达的总体思路:
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
要获得虚假的结果是真,你需要使用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
谢谢,但我问它如何在JavaScript中工作 – TheGateKeeper
@TheGateKeeper它是Javascript。它像Javascript那样可能。也许你被控制台部分弄糊涂了?通过这个,我的意思是你可以通过按ctrl + shift + J来显示Chrome中的开发者控制台。你可以在那里输入javascript并执行它。一个非常方便的方法来尝试不同的代码片段。 – zatatatata
由于问题询问的JavaScript正则表达式,那么说的回报是true
当比赛是错误的所有答案。正确的是javascript match()
方法
返回一个匹配数组,如果没有找到匹配,则返回null。
Im使用: var regex =/^ [a-z A-Z] + $ /; var check = regex.test($('tbName')。val()); 这会返回什么? – TheGateKeeper
它在匹配时返回“true”。这是我没有意识到的正则表达式对象。我曾经使用'match()'方法的字符串。那么,我的答案似乎只适用于'match()'字符串方法。 –
这取决于你如何使用正则表达式。
假设你只是为了测试该字符串中只包含字母字符那么这应该工作
function validateAlpha(s){
return (!s.match(/[^A-Za-z]/));
}
//Usage
var isValid = validateAlpha("test");
公告了“^”的正则表达式。这说明如果有任何不属于该范围的角色,那么就有一个匹配。在这种情况下,我们反转(!)以返回它是否有效。
所以要回答你的问题,是的,如果String.match函数发现匹配,它将返回true,否则如果使用捕获括号,它将返回一个匹配数组。
如果你想看看它是否只有字母的文本,该正则表达式不会完整。 –