3.0.3 • Published 6 months ago

real-name v3.0.3

Weekly downloads
-
License
ISC
Repository
github
Last release
6 months ago

real-name

A lightweight utility that checks if a string matches any name that has been used in the United States from 1880 to 2008, based on Social Security Administration data.

This also works for names from other countries. Check out the full dataset here to see for yourself.

Installation

npm install real-name

Usage

Check if a string is a name

import isName from 'real-name';

// Basic name checking
console.log(isName('John')); // true
console.log(isName('Fruitcake')); // false

// Works with first names only
console.log(isName('John Smith')); // false
console.log(isName('John')); // true

// Case-insensitive
console.log(isName('john')); // true
console.log(isName('John')); // true
console.log(isName('JOHN')); // true

Combine with word-exists

// Optional accessory to combine with isName
// Not my package, need to install it separately
// And update it to use ESM syntax
import wordExists from 'word-exists';

// Stricter filtering by combining with word-exists
function isValidName(str) {
    return isName(str) && !wordExists(str);
}

// Not always that reliable
console.log(isValidName('Adam')); // true (it's a name, not a word)
console.log(isValidName('Dick')); // false (It means penis FYI)
console.log(isValidName('John')); // false (This means bathroom I guess?)
console.log(isValidName('Jane')); // false (Okay what the fuck)
console.log(isValidName('Tom')); // false (...? I guess don't try this)

Extract names from an email address

import isName from 'real-name';

function extractNameFromEmail(email) {
    // Get the part before the @ symbol and take only the first segment
    const firstName = email.split('@')[0].split(/[._-]/)[0];
    return isName(firstName) ? firstName[0].toUpperCase() + firstName.slice(1) : null;
}

// Example usage
console.log(extractNameFromEmail('john.doe@example.com')); // 'John'
console.log(extractNameFromEmail('jane_doe-123@example.com')); // 'Jane'
console.log(extractNameFromEmail('jim.bob@example.com')); // 'Jim'
console.log(extractNameFromEmail('jeff@example.com')); // 'Jeff'
console.log(extractNameFromEmail('hello@example.com')); // null

Features

  • Checks against a comprehensive database of US names from 1880-2008
  • Case-insensitive matching
  • Handles whitespace trimming
  • Zero dependencies
  • Simple, straightforward API
  • Optional combination with word-exists package for stricter filtering

API

isName(string)

Returns true if the provided string matches any name in the database, false otherwise.

Parameters

  • string (String): The text to check against the name database

Returns

  • (Boolean): true if the string matches a known name, false otherwise

Version 3.0.0

It was broken. Now it's fixed.

Version 2.0.0

I finally started using this package to extract names from a dataset of email addresses, and I found some ways to improve it.

  • Updated to use ESM syntax
  • Changed to use JSON file with names grouped by length for faster lookups
  • Good to combine with word-exists package for stricter filtering

Here's a quick YouTube video I made showing how I used this package to extract names from a dataset of email addresses.

License

ISC

Contributing

Issues and pull requests are welcome! Please feel free to submit them on the GitHub repository.

3.0.3

6 months ago

3.0.2

6 months ago

3.0.1

6 months ago

3.0.0

6 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.0.2

8 months ago

1.0.1

8 months ago

1.0.0

8 months ago

0.0.2

4 years ago

0.0.1

4 years ago