
Security News
Open VSX Unblocks Extension IDs Used in Malware Campaign
Open VSX has removed three extension IDs from its malicious-extension list as the legitimate publishers they impersonated move to claim the names for themselves.
human-regex
Advanced tools
Human-friendly regular expression builder with English-like syntax.
npm install human-regex
import { createRegex } from "human-regex";
// Password validation: 8+ chars with special character, digit, and letter
const passwordRegex = createRegex()
.startAnchor()
.hasSpecialCharacter()
.hasDigit()
.hasLetter()
.anyCharacter()
.atLeast(8)
.endAnchor()
.toRegExp();
console.log(passwordRegex.test("P@ssw0rd")); // true
import { Patterns } from "human-regex";
// Email validation
console.log(Patterns.email().test("test@example.com")); // true
// International phone number
console.log(Patterns.phoneInternational().test("+123-4567890")); // true
// URL validation
console.log(Patterns.url().test("https://www.example.com/path")); // true
createRegex()Creates a new regex builder instance.
| Method | Description | Example Output |
|---|---|---|
.digit() | Adds a digit pattern (\d). | \d |
.word() | Adds a word character pattern (\w). | \w |
.whitespace() | Adds a whitespace character pattern (\s). | \s |
.nonWhitespace() | Adds a non-whitespace character pattern (\S). | \S |
.anyCharacter() | Adds a pattern for any character (.). | . |
.literal("text") | Adds a literal text pattern. | ["text"] |
.or() | Adds an OR pattern. | | |
.range("digit") | Adds a range pattern for digits (0-9). | [0-9] |
.notRange("aeiou") | Adds a range pattern for digits (0-9). | [0-9] |
| Method | Description | Example Output |
|---|---|---|
.exactly(n) | Adds an exact quantifier ({n}). | {n} |
.atLeast(n) | Adds a minimum quantifier ({n,}). | {n,} |
.atMost(n) | Adds a maximum quantifier ({0,n}). | {0,n} |
.between(min, max) | Adds a range quantifier ({min,max}). | {min,max} |
.oneOrMore() | Adds a one-or-more quantifier (+). | + |
.optional() | Adds an optional quantifier (?). | ? |
.zeroOrMore() | Adds a zero-or-more quantifier (*). | * |
.lazy() | Makes the previous quantifier lazy. | ? |
.repeat(count) | Repeats the previous pattern exactly count times. | {count} |
| Method | Description | Example Output |
|---|---|---|
.startGroup() | Starts a non-capturing group ((?:). | (?: |
.startCaptureGroup() | Starts a capturing group ((). | ( |
.startNamedGroup("name") | Starts a named capturing group. | (?<name> |
.endGroup() | Ends a group ()). | ) |
.startAnchor() | Adds a start anchor (^). | ^ |
.endAnchor() | Adds an end anchor ($). | $ |
.wordBoundary() | Adds a word boundary assertion (\b). | \b |
.nonWordBoundary() | Adds a non-word boundary assertion (\B). | \B |
| Method | Description | Example Output |
|---|---|---|
.hasSpecialCharacter() | Adds a lookahead for special characters. | (?=.*[!@#$%^&*]) |
.hasDigit() | Adds a lookahead for digits. | (?=.*\d) |
.hasLetter() | Adds a lookahead for letters. | (?=.*[a-zA-Z]) |
| Method | Description | Example Output |
|---|---|---|
.protocol() | Adds a protocol pattern (https?://). | https?:// |
.www() | Adds a www pattern ((www\.)?). | (www\.)? |
.path() | Adds a path pattern ((/\w+)*). | (/\w+)* |
.tld() | Adds a top-level domain pattern. | ["(com|org|net)"] |
| Method | Description | Example Output |
|---|---|---|
.global() | Adds the global flag (g). | g |
.nonSensitive() | Adds the case-insensitive flag (i). | i |
.multiline() | Adds the multiline flag (m). | m |
.dotAll() | Adds the dot-all flag (s). | s |
.sticky() | Adds the sticky flag (y). | y |
| Method | Description | Example Output |
|---|---|---|
.unicodeChar() | Matches Unicode characters. | \p{L} |
.unicodeDigit() | Matches Unicode digits. | \p{N} |
.unicodePunctuation() | Matches Unicode punctuation. | \p{P} |
.unicodeSymbol() | Matches Unicode symbols. | \p{S} |
Patterns.email: Predefined email pattern.Patterns.url: Predefined URL pattern.Patterns.phoneInternational: Predefined international phone number pattern.const basePattern = /^[A-Z]/;
const combined = createRegex().regex(basePattern).digit().exactly(3).toRegExp();
createRegex().literal("(?<=@)").word().oneOrMore().toRegExp();
createRegex()
.literal("(?<year>\\d{4})")
.literal("-")
.literal("(?<month>\\d{2})")
.toRegExp();
We welcome contributions! Please follow the guidelines in CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.
FAQs
Human-friendly regex builder with English-like syntax
The npm package human-regex receives a total of 54 weekly downloads. As such, human-regex popularity was classified as not popular.
We found that human-regex demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Open VSX has removed three extension IDs from its malicious-extension list as the legitimate publishers they impersonated move to claim the names for themselves.

Product
Socket’s PHP and Composer support is now in Beta for all customers, with PHP reachability analysis generally available.

Product
Socket is bringing experimental protection to Firefox, scanning 97,000+ extensions in Mozilla's official directory for malware and risky updates.