String validation is a fundamental aspect of web development, and knowing how to check if a string contains a substring using jQuery is essential for creating dynamic, interactive web applications.
Whether you’re building form validation, search functionality, or content filtering features, mastering string containment checks will significantly enhance your development toolkit.
Understand String Containment in jQuery
jQuery provides several methods to check if a string contains a specific substring. Unlike vanilla JavaScript, jQuery offers both CSS selector-based approaches and JavaScript method implementations that make string validation more intuitive and powerful.
Method 1: Use JavaScript’s indexOf() Method
The easy approach to check if a string contains a substring is using JavaScript’s built-in indexOf() method. This method returns the position of the first occurrence of a specified value in a string, or -1 if the value is not found.
$(document).ready(function() {
var mainString = "Welcome to jQuery programming";
var searchString = "jQuery";
if (mainString.indexOf(searchString) !== -1) {
console.log("String contains jQuery");
} else {
console.log("String does not contain jQuery");
}
});You can refer to the screenshot below to see the output.

Case-Insensitive Search with indexOf()
For case-insensitive searches, convert both strings to lowercase:
$(document).ready(function() {
var mainString = "Welcome to JQUERY Programming";
var searchString = "jquery";
if (mainString.toLowerCase().indexOf(searchString.toLowerCase()) !== -1) {
console.log("String contains jquery (case-insensitive)");
}
});Method 2: Use jQuery’s :contains() Selector
jQuery’s :contains() selector is particularly useful for selecting DOM elements that contain specific text. This selector is case-sensitive and searches through element content, including child elements.
$(document).ready(function() {
// Select all paragraphs containing "JavaScript"
var elementsWithText = $("p:contains('JavaScript')");
if (elementsWithText.length > 0) {
console.log("Found " + elementsWithText.length + " paragraphs containing 'JavaScript'");
elementsWithText.css("background-color", "yellow");
}
});You can refer to the screenshot below to see the output.

Practical Example: Dynamic Content Filtering
This jQuery example dynamically filters and highlights paragraphs based on user-entered search text.
<div id="content">
<p>Learning jQuery is fun and easy</p>
<p>JavaScript programming requires practice</p>
<p>Web development with jQuery speeds up coding</p>
<p>CSS styling complements JavaScript functionality</p>
</div>
<input type="text" id="searchInput" placeholder="Search content...">
<button id="filterBtn">Filter Content</button>$(document).ready(function() {
$('#filterBtn').click(function() {
var searchTerm = $('#searchInput').val();
if (searchTerm.length > 0) {
// Hide all paragraphs first
$('#content p').hide();
// Show only paragraphs containing the search term
$('#content p:contains("' + searchTerm + '")').show().css("background-color", "lightblue");
} else {
// Show all paragraphs if search is empty
$('#content p').show().css("background-color", "");
}
});
});Method 3: Use JavaScript’s includes() Method (ES6+)
Modern JavaScript provides the includes() method, which returns a Boolean value indicating whether a string contains a specified substring:
$(document).ready(function() {
var emailAddress = "user@example.com";
if (emailAddress.includes("@")) {
console.log("Valid email format detected");
$("#emailStatus").text("Email format appears valid").css("color", "green");
} else {
console.log("Invalid email format");
$("#emailStatus").text("Please enter a valid email").css("color", "red");
}
});You can refer to the screenshot below to see the output.

Method 4: Use Regular Expressions for Advanced Pattern Matching
For complex string validation scenarios, regular expressions provide powerful pattern-matching capabilities:
$(document).ready(function() {
function checkPhoneNumber(phoneString) {
var phonePattern = /\d{3}-\d{3}-\d{4}/;
return phonePattern.test(phoneString);
}
$('#phoneInput').blur(function() {
var phoneValue = $(this).val();
if (checkPhoneNumber(phoneValue)) {
$(this).css("border", "2px solid green");
$("#phoneMessage").text("Valid phone format").css("color", "green");
} else {
$(this).css("border", "2px solid red");
$("#phoneMessage").text("Please use XXX-XXX-XXXX format").css("color", "red");
}
});
});Real-World Application: Form Validation
Here’s a comprehensive example demonstrating string containment checks in a registration form:
<form id="registrationForm">
<input type="text" id="username" placeholder="Username" required>
<input type="password" id="password" placeholder="Password" required>
<input type="email" id="email" placeholder="Email" required>
<button type="submit">Register</button>
<div id="validationMessages"></div>
</form>$(document).ready(function() {
$('#registrationForm').submit(function(e) {
e.preventDefault();
var isValid = true;
var messages = [];
var username = $('#username').val();
var password = $('#password').val();
var email = $('#email').val();
// Username validation
if (username.length < 3) {
messages.push("Username must be at least 3 characters long");
isValid = false;
}
// Password strength validation
if (!password.includes("@") && !password.includes("#") && !password.includes("!")) {
messages.push("Password must contain at least one special character (@, #, or !)");
isValid = false;
}
// Email validation
if (!email.includes("@") || !email.includes(".")) {
messages.push("Please enter a valid email address");
isValid = false;
}
// Display validation results
if (isValid) {
$('#validationMessages').html("<p style='color: green;'>Registration successful!</p>");
} else {
var errorHtml = "<ul style='color: red;'>";
messages.forEach(function(message) {
errorHtml += "<li>" + message + "</li>";
});
errorHtml += "</ul>";
$('#validationMessages').html(errorHtml);
}
});
});Performance Considerations and Best Practices
When implementing string containment checks, consider these performance optimization strategies:
- Cache jQuery selectors: Store frequently used selectors in variables to avoid repeated DOM queries
- Use appropriate methods: Choose indexOf() for simple checks, :contains() for DOM selection, and includes() for modern browser support
- Implement debouncing: For real-time search features, use debouncing to limit API calls and improve performance
Browser Compatibility Notes
- The indexOf() method has universal browser support
- The :contains() selector works in all jQuery-supported browsers
- The includes() method requires ES6+ support (IE11+ or modern browsers)
Mastering string containment checks in jQuery opens up numerous possibilities for creating dynamic, user-friendly web applications. Whether you’re implementing search functionality, form validation, or content filtering, these techniques provide the foundation for robust string manipulation in your jQuery projects. Practice these methods and experiment with different combinations to build more sophisticated web applications that respond intelligently to user input.
Remember to always consider user experience, performance implications, and browser compatibility when implementing these string validation techniques in production environments.
You may also like to read:
- 51 jQuery Examples with Source Code
- How to Check if Input is Empty Using jQuery
- jQuery Check if Array is Empty
- jQuery Check if String Contains Specific Word

I am Bijay Kumar, a Microsoft MVP in SharePoint. Apart from SharePoint, I started working on Python, Machine learning, and artificial intelligence for the last 5 years. During this time I got expertise in various Python libraries also like Tkinter, Pandas, NumPy, Turtle, Django, Matplotlib, Tensorflow, Scipy, Scikit-Learn, etc… for various clients in the United States, Canada, the United Kingdom, Australia, New Zealand, etc. Check out my profile.