JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5681
  • Score
    100M100P100Q116294F
  • License ISC

A library to process strings with regular expressions.

Package Exports

  • react-process-string

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-process-string) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

react-process-string

The library allows you to process strings with regular expressions in ReactJS.

Installation

Via npm:

npm install react-process-string --save

Syntax

processString(options)(string);

Options should be an array of objects containing regex and fn fields. fn is a function that takes two arguments: key, to pass it to a react component and result — the result of regex executing.

Example usage

const processString = require('react-process-string');

class HelloWorld extends React.Component {
    render() {
        let config = [{
            regex: /(http|https):\/\/(\S+)\.([a-z]{2,}?)(.*?)( |\,|$|\.)/gim,
            fn: (key, result) => <span key={key}>
                                     <a target="_blank" href={`${result[1]}://${result[2]}.${result[3]}${result[4]}`}>{result[2]}.{result[3]}{result[4]}</a>{result[5]}
                                 </span>
        }, {
            regex: /(\S+)\.([a-z]{2,}?)(.*?)( |\,|$|\.)/gim,
            fn: (key, result) => <span key={key}>
                                     <a target="_blank" href={`http://${result[1]}.${result[2]}${result[3]}`}>{result[1]}.{result[2]}{result[3]}</a>{result[4]}
                                 </span>
        }];

        let stringWithLinks = "Watch this on youtube.com";
        let processed = processString(config)(stringWithLinks);

        return (
            <div>Hello world! {processed}</div>
        );
    }
}

On the user side, processed will contain clickable links.

Example №2

let users = ourStore.users;
let stringWithUsername = "Hello @efog, how do you feel today?";

let processed = processString([{
    regex: /\@([a-z0-9_\-]+?)( |\,|$|\.)/gim, //regex to match a username
    fn: (key, result) => {
        let username = result[1];
        let foundUsers = users.filter(user => user.username === username);

        if (!foundUsers.length)
            return result[0]; //@username

        return <a key={key} href={`/user/${username}`}>@{username}</a>;
    }
}]);

This code allows us to make @usernames clickable.