Regex for CDSL Demat account
16-digit CDSL demat account — all numeric, starts with DP ID.
The pattern
^\d{16}$
What it matches
12345678901234561208870098765432
What it doesn't match
IN3001234567890112345678901234512345678901234567
Notes & gotchas
CDSL demat accounts are 16 numeric digits: 8-digit DP ID + 8-digit client ID (or various splits depending on DP). Unlike NSDL, no "IN" prefix. Issued by DPs registered with CDSL (Central Depository Services Limited).
Code in your language
Use the explainer's Code tab to generate ready-to-paste snippets in JavaScript, Python, Java, .NET, Go, Ruby, and PHP for this pattern.
Open in explainer →About this pattern
India-specific identifiers are governed by various authorities (UIDAI for Aadhaar, Income Tax Dept for PAN, RBI for IFSC, GSTN for GSTIN, etc.). Regex confirms format; for definitive validation, integrate with the issuing authority's verification API.
Quick usage in different languages
Once you've validated a candidate value matches this pattern, you'll typically use it inside your application code. Each language has its own regex syntax:
- JavaScript:
new RegExp(pattern).test(value)or/pattern/.test(value) - Python:
re.match(pattern, value)with raw strings:r"pattern" - Java:
Pattern.compile(pattern).matcher(value).matches() - C# / .NET:
Regex.IsMatch(value, pattern) - Go:
regexp.MustCompile(pattern).MatchString(value)— Go uses RE2 so some advanced features aren't available - Ruby:
value =~ /pattern/orpattern.match?(value) - PHP:
preg_match('/pattern/', $value)
The explainer's Code tab generates these for any pattern you paste — including the right escaping and idioms for each language.
Common pitfalls
- Anchors matter. The pattern starts with
^and ends with$— it expects the entire input to match. To find this pattern inside a longer text, remove the anchors and use the/gflag for multiple matches. - Case sensitivity. Letter ranges like
[A-Z]only match uppercase. Use theiflag or[A-Za-z]for case-insensitive matching. - Escape user input. If you're building a regex from a string variable, escape regex metacharacters first to avoid bugs or injection — use
RegExp.escape-equivalents in your language. - Performance. For this specific pattern the risk is low, but be cautious of nested quantifiers when adapting it — they can cause exponential backtracking on adversarial input.
See also
Browse all 300 patterns in the library, or open this regex in the interactive explainer to see a token-by-token breakdown, test against custom input, and generate code in seven languages.
More India patterns: Browse the full library →