我有搜索功能。我想检查用户是否输入带有点(。)的文本单词/句子。
Example:
-anyword.anyword.
-.
-.anyword
一旦我检测到他/她输入了一个带有点的值,我会认为它是无效的。
我知道我可以使用regexp来做到这一点,但我仍然在学习它。所以任何人都可以在这里给我一个亮点,将不胜感激:)。
答案 0 :(得分:5)
您可以使用String#indexOf
:
if (theString.indexOf(".") !== -1) {
// It has a dot
}
但是如果你真的想要使用正则表达式(这对于找到.
会有点过分):
if (/\./.test(theString)) {
// It has a dot
}
/\./
部分是正则表达式。开头和结尾/
是正则表达式分隔符,例如"
和'
用于字符串。正则表达式的内容是\.
我们需要.
之前的反斜杠,否则,在正则表达式中,.
表示“匹配任何字符”。它之前的反斜杠“逃脱”它并告诉正则表达式字面上匹配一个点。 (我们在String#indexof
示例中不需要它,因为indexOf
没有对.
进行任何特殊处理。)
答案 1 :(得分:2)
最好使用indexOf
String
的{{1}}函数,然后使用Regexp
作为Regexp
,这对于这个scnerio来说将是一种矫枉过正的行为:
使用 MyString.indexOf('.')
如果返回-1 ,则字符串中没有点。如果返回值是某个整数,如0,1,2等,则在字符串中给出Dot的位置。所以-1告诉没有Dot
示例:
if(MyString.indexOf('.') === -1)
{
//No Dot is there, continue search
}
else
{
//Invalid string, dot is present
}
答案 2 :(得分:1)
试试这个
indexOf()
方法返回字符串中第一次出现指定值的位置。
如果要搜索的值永远不会发生,则此方法返回-1
。
var str = "test.test";
if(str.indexOf('.') === -1){
alert("no dot found.");
}
else{
alert("dot found.");
}