Javascript 如果.html()具有特定值
这可能是一个非常基本的问题,但我想知道如何确定Javascript 如果.html()具有特定值,javascript,jquery,html,Javascript,Jquery,Html,这可能是一个非常基本的问题,但我想知道如何确定.html()是否具有特定的值(在本例中为字符串)。例如: <p id="text">Hello this is a long text with numbers like 01234567</p> 这当然行不通。但是,我如何增强另一种方法,使之成为 if($text.html().contains() == '01234567'); 重要的是,在我的例子中,我肯定会搜索用空格分隔的东西,而不是像01234567这样用数字
.html()
是否具有特定的值(在本例中为字符串)。例如:
<p id="text">Hello this is a long text with numbers like 01234567</p>
这当然行不通。但是,我如何增强另一种方法,使之成为
if($text.html().contains() == '01234567');
重要的是,在我的例子中,我肯定会搜索用空格分隔的东西,而不是像01234567这样用数字分隔的,但如果这也能奏效的话,那确实会很有趣
提前谢谢 据我从OP了解,以下是测试用例:
hello12348hello // false
hello 1234hello // false
hello012348 hello // false
hello 1234 hello // TRUE
1234hello // false
hello1234 // false
1234 hello // TRUE
hello 1234 // TRUE
// false
1234 // TRUE
1234 // TRUE
**通过任何其他空白字符(例如,\t
,\n
,…)更改“
”,应得到相同的结果
正如OP所说:
对于那些用空格隔开的事物,不要用数字分隔,比如01234567
所以,hello 01234567和类似于
的数字也是错误的
创建函数:
function contains(value, searchString){
// option 1: splitting and finding a word separated by white spaces
var words = value.split(/\s+/g);
for (var i = 0; i < words.length; i++){
if (words[i] === searchString){
return true;
}
}
return false;
// option 1a: for IE9+
return value.split(/\s+/g).indexOf(searchString) > -1;
// option 2: using RegEx
return (new RegExp("\\b" + searchString + "\\b")).test(value);
return (new RegExp("(^|\\s)" + searchString + "($|\\s)")).test(value); // this also works
// option 3: Hardcoded RegEx
return /\b1234\b/.test(value);
}
感谢@Karl AndréGagnon提供的提示
\b
:任何边界词(或字符串的开头/结尾)
^
:字符串的开头
\s
:任何空白字符
$
:字符串的结尾
据我从OP了解,以下是测试用例:
hello12348hello // false
hello 1234hello // false
hello012348 hello // false
hello 1234 hello // TRUE
1234hello // false
hello1234 // false
1234 hello // TRUE
hello 1234 // TRUE
// false
1234 // TRUE
1234 // TRUE
**通过任何其他空白字符(例如,\t
,\n
,…)更改“
”,应得到相同的结果
正如OP所说:
对于那些用空格隔开的事物,不要用数字分隔,比如01234567
所以,hello 01234567和类似于
的数字也是错误的
创建函数:
function contains(value, searchString){
// option 1: splitting and finding a word separated by white spaces
var words = value.split(/\s+/g);
for (var i = 0; i < words.length; i++){
if (words[i] === searchString){
return true;
}
}
return false;
// option 1a: for IE9+
return value.split(/\s+/g).indexOf(searchString) > -1;
// option 2: using RegEx
return (new RegExp("\\b" + searchString + "\\b")).test(value);
return (new RegExp("(^|\\s)" + searchString + "($|\\s)")).test(value); // this also works
// option 3: Hardcoded RegEx
return /\b1234\b/.test(value);
}
感谢@Karl AndréGagnon提供的提示
\b
:任何边界词(或字符串的开头/结尾)
^
:字符串的开头
\s
:任何空白字符
$
:字符串的结尾
您可以使用:
您的HTML可能以01234567
开头;在这种情况下,您可以执行以下操作:
if((' ' + text).indexOf(" 01234567") != -1) {
// your logic
}
谢谢,bjb568和Felix Kling。您可以使用:
您的HTML可能以01234567
开头;在这种情况下,您可以执行以下操作:
if((' ' + text).indexOf(" 01234567") != -1) {
// your logic
}
谢谢,bjb568和Felix Kling。您可以使用JavaScript中的String.indexOf方法来确定一个字符串是否包含在另一个字符串中。如果传入indexOf的字符串不在该字符串中,则返回-1。这是你应该利用的行为
If ($test.html().indexOf("1234567890") != -1)
//Do Something
您可以在JavaScript中使用String.indexOf方法来确定一个字符串是否包含在另一个字符串中。如果传入indexOf的字符串不在该字符串中,则返回-1。这是你应该利用的行为
If ($test.html().indexOf("1234567890") != -1)
//Do Something
修复了开头文本的问题,不滥用正则表达式,万岁
if($text.html().indexOf('01234567') != -1) {
}
修复了开头文本的问题,不滥用正则表达式,万岁
if($text.html().indexOf('01234567') != -1) {
}
if($text.html().indexOf('01234567')!=-1{}关于空格,简单的解决方案:('''+.$text.html()+'').indexOf('01234567')
@Scadoodles如果中间没有空格,这个方法也可以吗?是的,contains()是jquery中的一个方法。但并不是为了你想做的:@supersize:你为什么不看看链接到的文档呢?(这里再说一遍:)。它描述了.indexOf
的工作原理并提供了一些例子。如果($text.html().indexOf('01234567')!=-1){}关于空格,简单的解决方案:('+.$text.html()+'').indexOf('01234567')
@scadoolds,如果中间没有空格,这个方法也可以工作吗?是的,contains()是jquery中的一个方法。但并不是为了你想做的:@supersize:你为什么不看看链接到的文档呢?(这里再说一遍:)。它描述了.indexOf
的工作原理并提供了示例。如果01234567
位于字符串的开头,该怎么办?您可以将。需要添加''+text
@Gautam:这在OR条件下如何工作?是否要测试'01234567'
和'01234567'
?@FelixKling(''+text).indexOf(“01234567”)=-如果01234567
在字符串的开头,那么1应该在这种情况下起作用。您可以将。需要添加''+text
@Gautam:这在OR条件下如何工作?是否要测试'01234567'
和'01234567'
?@FelixKling(''+text).indexOf(“01234567”)=-我应该在那工作case@bjb568滥用正则表达式,什么?这正是正则表达式的用途。那个DV和评论完全没有意义。@supersize不。我不知道那个家伙在说什么,但我想这就是解决问题的方法。滥用??读一下:@bjb568这并不复杂,这是一个坏习惯。这个答案中的正则表达式有多复杂?它是一个标识符和一个字符串。此外,性能论证也几乎毫无意义:——在这个用例中,微优化最多。在这个基准测试中,regex的表现优于除直接比较之外的所有其他方法,直接比较在这里不是一个选项。不管这意味着什么——你的立场仍然是有缺陷的。正则表达式用于字符串操作,它是用于此项工作的正确工具,并且性能优于indexOf
。任何人都不应该相信简单的模式对于简单的匹配操作来说“太复杂”的说法,这个建议显然是荒谬的。@bjb568滥用正则表达式,什么?这正是正则表达式的用途。那个DV和评论完全没有意义。@supersize不。我不知道那个家伙在说什么,但我想这就是解决问题的方法。滥用??读一下:@bjb568这并不复杂,这是一个坏习惯。这个答案中的正则表达式有多复杂?它是一个标识符和一个字符串。此外,性能论证也几乎毫无意义:——在这个用例中,微优化最多。在这个基准中,regex的表现优于除直接比较之外的所有其他方法,直接比较不是一个选项