2011-10-27 48 views
1

即时通讯只是想知道正则表达式验证如何在JavaScript中工作。快速正则表达式和JavaScript查询

说我有“测试”这个词,我想用正则表达式“/ [A-Za-z] /”来测试它,看它是否只是文本。

它是否返回true或false?

我问这是因为术语“找到一个匹配”用了很多,所以即时通讯想知道,如果它发现匹配时返回true(即找到一个不应该在那里的字符)。

感谢

+2

如果你想看看它是否只有字母的文本,该正则表达式不会完整。 –

回答

5

如果你想检查是否整个字符串只有字母然后执行以下操作

if (theString.match(/^[A-Za-z]+$/)) { 
    // It's only text 
} 

采用^$在这里很重要,以防止在输入部分匹配。

2

它评估为真或假将取决于您的正则表达式。

在你的例子中,如果你测试的字符串至少包含一个小写或大写字符,那么/[A-Za-z]/将返回true。

如果你想测试一个字符串只包含字母,正则表达式必须在该字符串测试所有的字符,如在^[a-zA-Z]+$

+0

明白了,所以当它发现一个不该在那里的角色时它会返回错误! – TheGateKeeper

+0

这就是要点!在这种情况下,即使空白也算作无效。 –

1

说我有“测试”一词,我想测试一下使用正则表达式 “/ [A-Za-z] /”来查看它是否仅为文本。

它是否返回true或false?

假设你正在使用JavaScript match()方法来运行你的正则表达式,您正则表达式将返回真正

正则表达式不足以完全测试整个字符串是否包含文本。首先,你对文本的定义是什么?字母数字?空间和标点怎么样?

当正则表达式包含第一个匹配时,它将返回true,除非指定了全局运算符。

对于您的情况,您正在搜索单个字母字符,这是不区分大小写的。因此,您的单词“test”将返回true,因为第一个字母“t”与正则表达式匹配。

你的正则表达式也将下列返回true:

test123 
[email protected]# 
t'is 
This is a sentence with 6 words 

如果你想整个字符串匹配,你的正则表达式必须包括^$符号表明要匹配整个字符串,并使用+符号来显示您允许多个字符。

+0

为什么它会在test123上返回true?它包含数字 – TheGateKeeper

+2

“您的正则表达式正在搜索单个字母字符”,因此它与第一个字符相匹配,并且会在整个字符串上返回一个真正的匹配结果。 –

+0

我明白了,谢谢。因此,如果我使用“/^[a-zA-Z] + $ /”如下所示,为什么输入仍像“123456”那样返回true? – TheGateKeeper

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 

要获得虚假的结果是真,你需要使用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 
+0

谢谢,但我问它如何在JavaScript中工作 – TheGateKeeper

+0

@TheGateKeeper它是Javascript。它像Javascript那样可能。也许你被控制台部分弄糊涂了?通过这个,我的意思是你可以通过按ctrl + shift + J来显示Chrome中的开发者控制台。你可以在那里输入javascript并执行它。一个非常方便的方法来尝试不同的代码片段。 – zatatatata

1

由于问题询问的JavaScript正则表达式,那么说的回报是true当比赛是错误的所有答案。正确的是javascript match()方法

返回一个匹配数组,如果没有找到匹配,则返回null。

+1

Im使用: var regex =/^ [a-z A-Z] + $ /; var check = regex.test($('tbName')。val()); 这会返回什么? – TheGateKeeper

+0

它在匹配时返回“true”。这是我没有意识到的正则表达式对象。我曾经使用'match()'方法的字符串。那么,我的答案似乎只适用于'match()'字符串方法。 –

1

这取决于你如何使用正则表达式。

假设你只是为了测试该字符串中只包含字母字符那么这应该工作

function validateAlpha(s){ 
    return (!s.match(/[^A-Za-z]/)); 
} 

//Usage 
var isValid = validateAlpha("test"); 

公告了“^”的正则表达式。这说明如果有任何不属于该范围的角色,那么就有一个匹配。在这种情况下,我们反转(!)以返回它是否有效。

所以要回答你的问题,是的,如果String.match函数发现匹配,它将返回true,否则如果使用捕获括号,它将返回一个匹配数组。