-
-
Notifications
You must be signed in to change notification settings - Fork 199
API
Regex101.com API Methods
There are a number of methods available to you via the public API of regex101.com.
Some methods require you to authenticate first.
Authentication can be initiated via a call to https://regex101.com/connect/[provider]
, where [provider]
can be github
, google
, or twitter
.
The OAuth mechanism itself is beyond the purpose of API documentation.
If you bump into any errors while using the API, please open a new GitHub issue.
-
Public Methods
- List and/or Search All Library Entries » (parameters; samples: call, success, error)
- Retrieve an Entry » (parameters; samples: call, success, error)
- Delete an Entry » (parameters; samples: call, success, error)
- Create an Entry » (parameters; samples: call, success, error)
- Update an Entry » (parameters; samples: call, success, error)
-
Authenticated methods
- Edit Entry Tags » (parameters; samples: call, success, error)
- Edit Entry Title » (parameters; samples: call, success, error)
- Lock or Unlock Entry » (parameters; samples: call, success, error)
- Mark or Unmark Entry as Favorite » (parameters; samples: call, success, error)
- Mark or Unmark Entry as Private » (parameters; samples: call, success, error)
- List All User Entries » (parameters; samples: call, success, error)
- List User Favorite Entries » (parameters; samples: call, success, error)
- List User Authored Entries » (parameters; samples: call, success, error)
- List All User Library Entries » (parameters; samples: call, success, error)
- Vote Library Entry Up or Down » (parameters; samples: call, success, error)
- Publish a Library Entry » (parameters; samples: call, success, error)
List and/or Search All Library Entries ↑
URL | Method |
---|---|
/api/library/# | GET |
/api/library/1?search=keyword+here&order=MOST_POINTS&filterFlavors=pcre | GET |
-
#: page number, using digits; i.e.
1
,2
, and so on. Can be obtained by listing any page first. If submitted page number is beyond what is available, the highest page number results are returned instead.
-
search: desired search keywords
Note: this changes returned page numbers, i.e. only search results are returned -
order: order results, values can be
MOST_POINTS
,MOST_RECENT
,LEAST_POINTS
-
filterFlavors: filter results by flavor:
pcre
,javascript
,golang
,python
Note: flavors can be combined
curl -X GET "https://regex101.com/api/library/1/?search=awesome+title"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/library/1/?search=awesome%20title",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/library/1/?search=awesome%20title");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/library/1/?search=awesome%20title",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/library/1/"
querystring = {"search":"awesome title"}
response = requests.request("GET", url, params=querystring)
print(response.text)
{
"data": [
{
"title": "My awesome title",
"description": "My even more awesome description",
"dateModified": "2016-10-07T03:46:35.000Z",
"author": "JohnDoe2",
"flavor": "pcre",
"version": 1,
"permalinkFragment": "YtA4hF",
"upvotes": 0,
"downvotes": 0,
"userVote": null
}
],
"page": 1,
"pages": 1
}
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
Retrieve an Entry ↑
URL | Method |
---|---|
/api/regex/uniqueID/revision | GET |
- uniqueID: entry's unique ID
- revision: entry's revision number
none
curl -X GET "https://regex101.com/api/regex/AaKDTO/1"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/regex/AaKDTO/1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/regex/AaKDTO/1");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/regex/AaKDTO/1",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/regex/AaKDTO/1"
response = requests.request("GET", url)
print(response.text)
{
"regex": "testing \\w+",
"testString": "testing retrieval",
"flags": "gs",
"delimiter": "/",
"flavor": "pcre",
"substitution": null,
"title": null,
"unitTests": [
{
"description": "testing ok festering not ok",
"criteria": "DOES_NOT_MATCH",
"target": "REGEX",
"testString": "festering",
"compareString": null
}
],
"isFavorite": false,
"isLibraryEntry": false
}
{ "error": "Regex does not exist (/r/AaKDTO/1) (Error Id: 5b30f207-a459-40b4-812a-f7213b2efee5)" }
Delete an Entry ↑
URL | Method |
---|---|
/api/regex | DELETE |
- deleteCode: entry's specific delete code
none
curl \
-X DELETE \
-H "Content-Type: application/json" \
-d@- \
"https://regex101.com/api/regex" <<EOF
{
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR"
}
EOF
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/regex",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_POSTFIELDS => "{\"deleteCode\":\"00f0lICHYn0J0Q000TVxXKdR\"}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("DELETE", "https://regex101.com/api/regex");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "DELETE",
"hostname": "regex101.com",
"port": null,
"path": "/api/regex",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ deleteCode: '00f0lICHYn0J0Q000TVxXKdR' }));
req.end();
import requests
url = "https://regex101.com/api/regex"
payload = "{\"deleteCode\":\"00f0lICHYn0J0Q000TVxXKdR\"}"
headers = {'content-type': 'application/json'}
response = requests.request("DELETE", url, data=payload, headers=headers)
print(response.text)
{ "message": "Your regex has been deleted." }
{ "error": "Invalid delete code (Error Id: de5d83ef-fe6c-4127-83d8-4d5c9abdfc5a)" }
Create an Entry ↑
URL | Method | content-type |
---|---|---|
/api/regex | POST | application/json |
- regex: your regular expression
- flags: flags to be enabled for this regular expression
-
delimiter: delimiter character to be used, i.e.
"
, or@
, or/
-
flavor: desired regular expression engine, i.e.
pcre
, orpython
, orjavascript
, etc.
flavor | delimiter choice |
---|---|
pcre(php) |
/ or ~ or @ ; or % or `
|
javascript | / |
python |
" or '
|
golang | ` |
- testString: desired test string
- substitution: a substitution pattern for this regex
-
unitTests: JSON array containing each unit test, composed of the following variables:
- description: a description for this unit test
- testString: string to test against using entry's regular expression
- compareString: string to compare resulting match to
-
target: can either be
REGEX
for the entry regex or0
for the entry's resulting match -
criteria: match condition, depending on target; it can be
DOES_MATCH
,DOES_NOT_MATCH
,STARTS_WITH
,ENDS_WITH
,CONTAINS
,EQUALS
orIS_NULL
criteria | explanation (given regex executed on testString of unit test) |
applicable target |
---|---|---|
DOES_MATCH |
assert that the regex matches the whole input | REGEX |
DOES_NOT_MATCH |
assert that the regex doesn't match the whole input | REGEX |
STARTS_WITH |
assert that the target starts with compareString |
0 orcapture group #
|
ENDS_WITH |
assert that the target ends with compareString |
0 orcapture group #
|
CONTAINS |
assert that the target contains compareString |
0 orcapture group #
|
EQUALS |
assert that the target equals compareString |
0 orcapture group #
|
IS_NULL |
assert that the target does not participate in match | capture group #
|
curl -X POST -H "Expect:" -H "Content-Type: application/json" -d ' {
"regex":"\\w+",
"testString":"bird is the word",
"flags":"g",
"delimiter":"@",
"flavor":"pcre",
"unitTests":[
{ "description":"testing ok festering not ok",
"criteria":"DOES_NOT_MATCH",
"target":"REGEX",
"testString":"festering" },
{ "description":"word should match",
"criteria":"DOES_MATCH",
"testString":"awesomelicious",
"target":"REGEX" },
{ "description":"match starts with",
"criteria":"STARTS_WITH",
"testString":"bird",
"target":"0",
"compareString":"bird" },
{ "description":"match ends with",
"criteria":"ENDS_WITH",
"testString":"poop",
"target":"0",
"compareString":"poop" },
{ "description":"there should be a word in here somewhere",
"criteria":"CONTAINS",
"testString":"word",
"target":"0",
"compareString":"word" },
{ "description":"bird is the word, for real",
"criteria":"EQUALS",
"testString":"bird is the word",
"target":"0",
"compareString":"bird is the word" },
{ "description":"no result",
"criteria":"IS_NULL",
"testString":"fishing",
"target":"0",
"compareString":null }
]
}' "https://regex101.com/api/regex"
Click to see this sample call in other languages
$curl = curl_init();
$fields = array (
'regex' => '\w+',
'testString' => 'bird is the word',
'flags' => 'g',
'delimiter' => '@',
'flavor' => 'pcre',
'unitTests' =>
array (
0 =>
array (
'description' => 'testing ok festering not ok',
'criteria' => 'DOES_NOT_MATCH',
'target' => 'REGEX',
'testString' => 'festering',
),
1 =>
array (
'description' => 'word should match',
'criteria' => 'DOES_MATCH',
'testString' => 'awesomelicious',
'target' => 'REGEX',
),
2 =>
array (
'description' => 'match starts with',
'criteria' => 'STARTS_WITH',
'testString' => 'bird',
'target' => '0',
'compareString' => 'bird',
),
3 =>
array (
'description' => 'match ends with',
'criteria' => 'ENDS_WITH',
'testString' => 'poop',
'target' => '0',
'compareString' => 'poop',
),
4 =>
array (
'description' => 'there should be a word in here somewhere',
'criteria' => 'CONTAINS',
'testString' => 'word',
'target' => '0',
'compareString' => 'word',
),
5 =>
array (
'description' => 'bird is the word, for real',
'criteria' => 'EQUALS',
'testString' => 'bird is the word',
'target' => '0',
'compareString' => 'bird is the word',
),
6 =>
array (
'description' => 'no result',
'criteria' => 'IS_NULL',
'testString' => 'fishing',
'target' => '0',
'compareString' => NULL,
),
),
);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/regex",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($fields),
CURLOPT_HTTPHEADER => array(
"content-type: application/json",
"Expect:"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"regex": "\\w+",
"testString": "bird is the word",
"flags": "g",
"delimiter": "@",
"flavor": "pcre",
"unitTests": [{
"description": "testing ok festering not ok",
"criteria": "DOES_NOT_MATCH",
"target": "REGEX",
"testString": "festering"
}, {
"description": "word should match",
"criteria": "DOES_MATCH",
"testString": "awesomelicious",
"target": "REGEX"
}, {
"description": "match starts with",
"criteria": "STARTS_WITH",
"testString": "bird",
"target": "0",
"compareString": "bird"
}, {
"description": "match ends with",
"criteria": "ENDS_WITH",
"testString": "poop",
"target": "0",
"compareString": "poop"
}, {
"description": "there should be a word in here somewhere",
"criteria": "CONTAINS",
"testString": "word",
"target": "0",
"compareString": "word"
}, {
"description": "bird is the word, for real",
"criteria": "EQUALS",
"testString": "bird is the word",
"target": "0",
"compareString": "bird is the word"
}, {
"description": "no result",
"criteria": "IS_NULL",
"testString": "fishing",
"target": "0",
"compareString": null
}]
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://regex101.com/api/regex");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "POST",
"hostname": "regex101.com",
"port": null,
"path": "/api/regex",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ regex: '\\w+',
testString: 'bird is the word',
flags: 'g',
delimiter: '@',
flavor: 'pcre',
unitTests:
[ { description: 'testing ok festering not ok',
criteria: 'DOES_NOT_MATCH',
target: 'REGEX',
testString: 'festering' },
{ description: 'word should match',
criteria: 'DOES_MATCH',
testString: 'awesomelicious',
target: 'REGEX' },
{ description: 'match starts with',
criteria: 'STARTS_WITH',
testString: 'bird',
target: '0',
compareString: 'bird' },
{ description: 'match ends with',
criteria: 'ENDS_WITH',
testString: 'poop',
target: '0',
compareString: 'poop' },
{ description: 'there should be a word in here somewhere',
criteria: 'CONTAINS',
testString: 'word',
target: '0',
compareString: 'word' },
{ description: 'bird is the word, for real',
criteria: 'EQUALS',
testString: 'bird is the word',
target: '0',
compareString: 'bird is the word' },
{ description: 'no result',
criteria: 'IS_NULL',
testString: 'fishing',
target: '0',
compareString: null } ] }));
req.end();
import requests
url = "https://regex101.com/api/regex"
payload = " {\n \"regex\":\"\\\\w+\",\n \"testString\":\"bird is the word\",\n \"flags\":\"g\",\n \"delimiter\":\"@\",\n \"flavor\":\"pcre\",\n \"unitTests\":[\n {\n \"description\":\"testing ok festering not ok\",\n \"criteria\":\"DOES_NOT_MATCH\",\n \"target\":\"REGEX\",\n \"testString\":\"festering\"\n },\n {\n \"description\":\"word should match\",\n \"criteria\":\"DOES_MATCH\",\n \"testString\":\"awesomelicious\",\n \"target\":\"REGEX\"\n },\n {\n \"description\":\"match starts with\",\n \"criteria\":\"STARTS_WITH\",\n \"testString\":\"bird\",\n \"target\":\"0\",\n \"compareString\":\"bird\"\n },\n {\n \"description\":\"match ends with\",\n \"criteria\":\"ENDS_WITH\",\n \"testString\":\"poop\",\n \"target\":\"0\",\n \"compareString\":\"poop\"\n },\n {\n \"description\":\"there should be a word in here somewhere\",\n \"criteria\":\"CONTAINS\",\n \"testString\":\"word\",\n \"target\":\"0\",\n \"compareString\":\"word\"\n },\n {\n \"description\":\"bird is the word, for real\",\n \"criteria\":\"EQUALS\",\n \"testString\":\"bird is the word\",\n \"target\":\"0\",\n \"compareString\":\"bird is the word\"\n },\n {\n \"description\":\"no result\",\n \"criteria\":\"IS_NULL\",\n \"testString\":\"fishing\",\n \"target\":\"0\",\n \"compareString\":null\n }\n ]\n}"
headers = {'content-type': 'application/json'}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
{
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"permalinkFragment": "FNTZ51",
"version": 1,
"isLibraryEntry": false
}
{ "error": "<error-message> (Error Id: a5844079-8cd6-4b1b-a730-a361facc3aef)" }
Update an Entry ↑
URL | Method | content-type |
---|---|---|
/api/regex | POST | application/json |
- regex: your regular expression
- flags: flags to be enabled for this regular expression
-
delimiter: delimiter character to be used, i.e.
"
, or@
, or/
-
flavor: desired regular expression engine, i.e.
pcre
, orpython
, orjavascript
, etc. -
permalinkFragment: the unique ID for the entry you wish to update.
Note: If this parameter is ommitted, a new entry will be created instead.
- testString: desired test string
- substitution: a substitution pattern for this regex
-
unitTests: JSON array containing each unit test, composed of the following variables:
- description: a description for this unit test
- testString: string to test against using entry's regular expression
- compareString: string to compare resulting match to
-
target: can either be
REGEX
for the entry regex or0
for the entry's resulting match -
criteria: match condition, depending on target; it can be
DOES_MATCH
,DOES_NOT_MATCH
,STARTS_WITH
,ENDS_WITH
,CONTAINS
,EQUALS
orIS_NULL
criteria | explanation (given regex executed on testString of unit test) |
applicable target |
---|---|---|
DOES_MATCH |
assert that the regex matches the whole input | REGEX |
DOES_NOT_MATCH |
assert that the regex doesn't match the whole input | REGEX |
STARTS_WITH |
assert that the target starts with compareString |
0 orcapture group #
|
ENDS_WITH |
assert that the target ends with compareString |
0 orcapture group #
|
CONTAINS |
assert that the target contains compareString |
0 orcapture group #
|
EQUALS |
assert that the target equals compareString |
0 orcapture group #
|
IS_NULL |
assert that the target does not participate in match | capture group #
|
curl -X POST -H "Expect:" -H "Content-Type: application/json" -d ' {
"regex":"\\w+",
"testString":"bird is the word",
"flags":"g",
"delimiter":"@",
"flavor":"pcre",
"permalinkFragment": "zf3ouS",
"unitTests":[
{
"description":"testing ok festering not ok",
"criteria":"DOES_NOT_MATCH",
"target":"REGEX",
"testString":"festering"
},
{
"description":"word should match",
"criteria":"DOES_MATCH",
"testString":"awesomelicious",
"target":"REGEX"
},
{
"description":"match starts with",
"criteria":"STARTS_WITH",
"testString":"bird",
"target":"0",
"compareString":"bird"
},
{
"description":"match ends with",
"criteria":"ENDS_WITH",
"testString":"poop",
"target":"0",
"compareString":"poop"
},
{
"description":"there should be a word in here somewhere",
"criteria":"CONTAINS",
"testString":"word",
"target":"0",
"compareString":"word"
},
{
"description":"bird is the word, for real",
"criteria":"EQUALS",
"testString":"bird is the word",
"target":"0",
"compareString":"bird is the word"
},
{
"description":"no result",
"criteria":"IS_NULL",
"testString":"fishing",
"target":"0",
"compareString":null
}
]
}' "https://regex101.com/api/regex"
Click to see this sample call in other languages
$curl = curl_init();
$fields = array (
'regex' => '\w+',
'testString' => 'bird is the word',
'flags' => 'g',
'delimiter' => '@',
'flavor' => 'pcre',
'permalinkFragment' => 'zf3ouS',
'unitTests' =>
array (
0 =>
array (
'description' => 'testing ok festering not ok',
'criteria' => 'DOES_NOT_MATCH',
'target' => 'REGEX',
'testString' => 'festering',
),
1 =>
array (
'description' => 'word should match',
'criteria' => 'DOES_MATCH',
'testString' => 'awesomelicious',
'target' => 'REGEX',
),
2 =>
array (
'description' => 'match starts with',
'criteria' => 'STARTS_WITH',
'testString' => 'bird',
'target' => '0',
'compareString' => 'bird',
),
3 =>
array (
'description' => 'match ends with',
'criteria' => 'ENDS_WITH',
'testString' => 'poop',
'target' => '0',
'compareString' => 'poop',
),
4 =>
array (
'description' => 'there should be a word in here somewhere',
'criteria' => 'CONTAINS',
'testString' => 'word',
'target' => '0',
'compareString' => 'word',
),
5 =>
array (
'description' => 'bird is the word, for real',
'criteria' => 'EQUALS',
'testString' => 'bird is the word',
'target' => '0',
'compareString' => 'bird is the word',
),
6 =>
array (
'description' => 'no result',
'criteria' => 'IS_NULL',
'testString' => 'fishing',
'target' => '0',
'compareString' => NULL,
),
),
);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/regex",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($fields),
CURLOPT_HTTPHEADER => array(
"content-type: application/json",
"expect:"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"regex": "\\w+",
"testString": "bird is the word",
"flags": "g",
"delimiter": "@",
"flavor": "pcre",
"permalinkFragment": "zf3ouS",
"unitTests": [{
"description": "testing ok festering not ok",
"criteria": "DOES_NOT_MATCH",
"target": "REGEX",
"testString": "festering"
}, {
"description": "word should match",
"criteria": "DOES_MATCH",
"testString": "awesomelicious",
"target": "REGEX"
}, {
"description": "match starts with",
"criteria": "STARTS_WITH",
"testString": "bird",
"target": "0",
"compareString": "bird"
}, {
"description": "match ends with",
"criteria": "ENDS_WITH",
"testString": "poop",
"target": "0",
"compareString": "poop"
}, {
"description": "there should be a word in here somewhere",
"criteria": "CONTAINS",
"testString": "word",
"target": "0",
"compareString": "word"
}, {
"description": "bird is the word, for real",
"criteria": "EQUALS",
"testString": "bird is the word",
"target": "0",
"compareString": "bird is the word"
}, {
"description": "no result",
"criteria": "IS_NULL",
"testString": "fishing",
"target": "0",
"compareString": null
}]
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://regex101.com/api/regex");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("expect", "");
xhr.send(data);
var http = require("https");
var options = {
"method": "POST",
"hostname": "regex101.com",
"port": null,
"path": "/api/regex",
"headers": {
"content-type": "application/json",
"expect": ""
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ regex: '\\w+',
testString: 'bird is the word',
flags: 'g',
delimiter: '@',
flavor: 'pcre',
permalinkFragment: 'zf3ouS',
unitTests:
[ { description: 'testing ok festering not ok',
criteria: 'DOES_NOT_MATCH',
target: 'REGEX',
testString: 'festering' },
{ description: 'word should match',
criteria: 'DOES_MATCH',
testString: 'awesomelicious',
target: 'REGEX' },
{ description: 'match starts with',
criteria: 'STARTS_WITH',
testString: 'bird',
target: '0',
compareString: 'bird' },
{ description: 'match ends with',
criteria: 'ENDS_WITH',
testString: 'poop',
target: '0',
compareString: 'poop' },
{ description: 'there should be a word in here somewhere',
criteria: 'CONTAINS',
testString: 'word',
target: '0',
compareString: 'word' },
{ description: 'bird is the word, for real',
criteria: 'EQUALS',
testString: 'bird is the word',
target: '0',
compareString: 'bird is the word' },
{ description: 'no result',
criteria: 'IS_NULL',
testString: 'fishing',
target: '0',
compareString: null } ] }));
req.end();
import requests
url = "https://regex101.com/api/regex"
payload = " {\n \"regex\":\"\\\\w+\",\n \"testString\":\"bird is the word\",\n \"flags\":\"g\",\n \"delimiter\":\"@\",\n \"flavor\":\"pcre\",\n \"permalinkFragment\": \"zf3ouS\",\n \"unitTests\":[\n {\n \"description\":\"testing ok festering not ok\",\n \"criteria\":\"DOES_NOT_MATCH\",\n \"target\":\"REGEX\",\n \"testString\":\"festering\"\n },\n {\n \"description\":\"word should match\",\n \"criteria\":\"DOES_MATCH\",\n \"testString\":\"awesomelicious\",\n \"target\":\"REGEX\"\n },\n {\n \"description\":\"match starts with\",\n \"criteria\":\"STARTS_WITH\",\n \"testString\":\"bird\",\n \"target\":\"0\",\n \"compareString\":\"bird\"\n },\n {\n \"description\":\"match ends with\",\n \"criteria\":\"ENDS_WITH\",\n \"testString\":\"poop\",\n \"target\":\"0\",\n \"compareString\":\"poop\"\n },\n {\n \"description\":\"there should be a word in here somewhere\",\n \"criteria\":\"CONTAINS\",\n \"testString\":\"word\",\n \"target\":\"0\",\n \"compareString\":\"word\"\n },\n {\n \"description\":\"bird is the word, for real\",\n \"criteria\":\"EQUALS\",\n \"testString\":\"bird is the word\",\n \"target\":\"0\",\n \"compareString\":\"bird is the word\"\n },\n {\n \"description\":\"no result\",\n \"criteria\":\"IS_NULL\",\n \"testString\":\"fishing\",\n \"target\":\"0\",\n \"compareString\":null\n }\n ]\n}"
headers = {
'content-type': "application/json",
'expect': ""
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
{
"deleteCode": null,
"permalinkFragment": "SMEOqX",
"version": 2,
"isLibraryEntry": false
}
{ "error": "<error-message> (Error Id: a5844079-8cd6-4b1b-a730-a361facc3aef)" }
Edit Entry Tags ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/uniqueID/#/tags | PUT |
- uniqueID: entry's unique ID
-
#: entry's version number, using digits; i.e.
1
,2
, and so on. -
tags: desired tags
Note: this is not cumulative, it will replace the tags altogether. If an empty array is sent, all tags will be removed from the entry.
none
curl -X PUT -H "Content-Type: application/json" \
-d '{"tags":["taggy","wimpy","awesome"]}' "https://regex101.com/api/user/history/YtA4hF/1/tags"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/YtA4hF/1/tags",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{\"tags\":[\"taggy\",\"wimpy\",\"awesome\"]}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"tags": [
"taggy",
"wimpy",
"awesome"
]
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://regex101.com/api/user/history/YtA4hF/1/tags");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "PUT",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/YtA4hF/1/tags",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ tags: [ 'taggy', 'wimpy', 'awesome' ] }));
req.end();
import requests
url = "https://regex101.com/api/user/history/YtA4hF/1/tags"
payload = "{\"tags\":[\"taggy\",\"wimpy\",\"awesome\"]}"
headers = {'content-type': 'application/json'}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{ "message": "Tags updated" }
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
Edit Entry Title ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/uniqueID/#/title | PUT |
- uniqueID: entry's unique ID
-
#: entry's version number, using digits; i.e.
1
,2
, and so on. - title: desired title
none
curl -X PUT -H "Content-Type: application/json" \
-d '{"title":"Awesomest Title"}' "https://regex101.com/api/user/history/YtA4hF/1/title"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/YtA4hF/1/title",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{\"title\":\"Testing now again\"}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"title": "Awesomest Title Here"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://regex101.com/api/user/history/YtA4hF/1/title");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "PUT",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/YtA4hF/1/title",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ title: 'Testing now again' }));
req.end();
import requests
url = "https://regex101.com/api/user/history/YtA4hF/1/title"
payload = "{\"title\":\"Testing now again\"}"
headers = {'content-type': 'application/json'}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{ "message": "Title updated" }
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
Lock or Unlock Entry ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/uniqueID/lock | PUT |
- uniqueID: entry's unique ID
-
isLocked: can be
true
orfalse
none
curl -X PUT -H "Content-Type: application/json" \
-d '{"isLocked":"true"}' "https://regex101.com/api/user/history/YtA4hF/lock"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/YtA4hF/lock",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{\"isLocked\":\"true\"}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"isLocked": "true"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://regex101.com/api/user/history/YtA4hF/lock");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "PUT",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/YtA4hF/lock",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ isLocked: 'true' }));
req.end();
import requests
url = "https://regex101.com/api/user/history/YtA4hF/lock"
payload = "{\"isLocked\":\"true\"}"
headers = {'content-type': 'application/json'}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{ "message": "Lock status updated" }
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
Mark or Unmark Entry as Favorite ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/favorite/uniqueID/# | PUT |
-
uniqueID: entry's unique ID
-
isFavorite: changes favorite status for entry with uniqueID specified. Can be
true
orfalse
.
-
#: entry's version number, using digits; i.e.
1
,2
, and so on.
none
curl -X PUT -H "Content-Type: application/json" \
-d '{"isFavorite":true}' "https://regex101.com/api/user/favorite/Ub4W2T/1"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/favorite/Ub4W2T/1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{\"isFavorite\":true}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"isFavorite": true
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://regex101.com/api/user/favorite/Ub4W2T/1");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "PUT",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/favorite/Ub4W2T/1",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ isFavorite: true }));
req.end();
import requests
url = "https://regex101.com/api/user/favorite/Ub4W2T/1"
payload = "{\"isFavorite\":true}"
headers = {'content-type': 'application/json'}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{ "message": "Favorite status updated" }
{ "error": "<error-message> (Error Id: d7216117-ce7b-47da-ab77-96a05cc726c4)" }
Mark or Unmark Entry as Private ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/uniqueID/private | PUT |
-
uniqueID: entry's unique ID
-
isPrivate: changes private status for entry with uniqueID specified. Can be
true
orfalse
.
Note: you may not mark an entry submitted to the library as private
none
curl -X PUT -H "Content-Type: application/json" -d '{"isPrivate":true}' "https://regex101.com/api/user/history/8UvNcD/private"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/8UvNcD/private",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => "{\"isPrivate\":true}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"isPrivate": true
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("PUT", "https://regex101.com/api/user/history/8UvNcD/private");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "PUT",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/8UvNcD/private",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ isPrivate: true }));
req.end();
import requests
url = "https://regex101.com/api/user/history/8UvNcD/private"
payload = "{\"isPrivate\":true}"
headers = {'content-type': 'application/json'}
response = requests.request("PUT", url, data=payload, headers=headers)
print(response.text)
{ "message": "Private status updated" }
{ "error": "<error-message> (Error Id: d7216117-ce7b-47da-ab77-96a05cc726c4)" }
List All User Entries ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/all/# | GET |
/api/user/history/all/1/?filterTags=awesome&filterTags=taggy | GET |
-
#: page number, using digits; i.e.
1
,2
, and so on. Can be obtained by listing any page first.
- filterTags: filter results by tags, multiple tags can be passed
curl -X GET "https://regex101.com/api/user/history/all/1/?filterTags=api"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/all/1/?filterTags=api",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/user/history/all/1/?filterTags=api");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/all/1/?filterTags=api",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/user/history/all/1/"
querystring = {"filterTags":"api"}
response = requests.request("GET", url, params=querystring)
print(response.text)
{
"allTags": [
"taggy",
"awesome",
"api",
"wimpy"
],
"page": 1,
"pages": 1,
"data": [
{
"permalinkFragment": "UbxW2T",
"isPrivate": false,
"isLocked": true,
"version": 1,
"isOwner": true,
"regex": "tester",
"delimiter": "/",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-05T23:48:33.000Z",
"title": "API documentation sample",
"isFavorite": true,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": true,
"tags": [
"api"
]
}
]
}
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
List User Favorite Entries ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/favorites/# | GET |
/api/user/history/favorites/#?filterTags=awesome&filterTags=taggy | GET |
-
#: page number, using digits; i.e.
1
,2
, and so on. Can be obtained by listing any page first. If submitted page number is beyond what is available, the highest page number results are returned instead.
- filterTags: filter results by tags, multiple tags can be passed
curl -X GET "https://regex101.com/api/user/history/favorites/1/?filterTags=api"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/favorites/1/?filterTags=api",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/user/history/favorites/1/?filterTags=api");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/favorites/1/?filterTags=api",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/user/history/favorites/1/"
querystring = {"filterTags":"api"}
response = requests.request("GET", url, params=querystring)
print(response.text)
{
"allTags": [
"taggy",
"awesome",
"api",
"wimpy"
],
"page": 1,
"pages": 1,
"data": [
{
"permalinkFragment": "UbxW2T",
"isPrivate": false,
"isLocked": true,
"version": 1,
"isOwner": true,
"regex": "tester",
"delimiter": "/",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-05T23:48:33.000Z",
"title": "API documentation sample",
"isFavorite": true,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": true,
"tags": [
"api"
]
}
]
}
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
List User Authored Entries ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/mine/# | GET |
/api/user/history/mine/#?filterTags=awesome&filterTags=taggy | GET |
-
#: page number, using digits; i.e.
1
,2
, and so on. Can be obtained by listing any page first. If submitted page number is beyond what is available, the highest page number results are returned instead.
- filterTags: filter results by tags, multiple tags can be passed
curl -X GET "https://regex101.com/api/user/history/mine/1/?filterTags=taggy"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/mine/1/?filterTags=taggy",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/user/history/mine/1/?filterTags=taggy");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/mine/1/?filterTags=taggy",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/user/history/mine/1/"
querystring = {"filterTags":"taggy"}
response = requests.request("GET", url, params=querystring)
print(response.text)
{
"allTags": [
"taggy",
"awesome",
"api",
"wimpy"
],
"page": 1,
"pages": 2,
"data": [
{
"permalinkFragment": "YtA4hF",
"isPrivate": false,
"isLocked": true,
"version": 1,
"isOwner": true,
"regex": "(\\w+)(2)?",
"delimiter": "@",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-07T03:46:35.000Z",
"title": "look ma, no hands",
"isFavorite": false,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": true,
"tags": [
"taggy",
"wimpy",
"awesome"
]
},
{
"permalinkFragment": "fT1vgb",
"isPrivate": false,
"isLocked": false,
"version": 3,
"isOwner": true,
"regex": "\\b(?:word|attractive|some|become)\\b",
"delimiter": "/",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-05T13:05:10.000Z",
"title": null,
"isFavorite": false,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": false,
"tags": []
}
]
}
{ "error": "<error-message> (Error Id: 528044b7-854e-46f9-ae92-07786bafa663)" }
List All User Library Entries ↑
This method requires authentication.
URL | Method |
---|---|
/api/user/history/library/# | GET |
/api/user/history/library/#?filterTags=awesome&filterTags=taggy | GET |
-
#: page number, using digits; i.e.
1
,2
, and so on. Number of pages is in the response. If submitted page number is beyond what is available, the highest page number results are returned instead.
- filterTags: filter results by tags, multiple tags can be passed
curl -X GET "https://regex101.com/api/user/history/library/1"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/user/history/library/1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = null;
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "https://regex101.com/api/user/history/library/1");
xhr.send(data);
var http = require("https");
var options = {
"method": "GET",
"hostname": "regex101.com",
"port": null,
"path": "/api/user/history/library/1",
"headers": {}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.end();
import requests
url = "https://regex101.com/api/user/history/library/1"
response = requests.request("GET", url)
print(response.text)
{
"allTags": [
"taggy",
"api"
],
"page": 1,
"pages": 1,
"data": [
{
"permalinkFragment": "YtA4hF",
"isPrivate": false,
"isLocked": true,
"version": 1,
"isOwner": true,
"regex": "(\\w+)(2)?",
"delimiter": "@",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-07T03:46:35.000Z",
"title": null,
"isFavorite": false,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": true,
"tags": []
},
{
"permalinkFragment": "UbxW2T",
"isPrivate": false,
"isLocked": true,
"version": 1,
"isOwner": true,
"regex": "tester",
"delimiter": "/",
"flags": "g",
"flavor": "pcre",
"dateAdded": "2016-10-05T23:48:33.000Z",
"title": "API documentation sample",
"isFavorite": false,
"deleteCode": "00f0lICHYn0J0Q000TVxXKdR",
"isLibraryEntry": true,
"tags": [
"api"
]
}
]
}
{ "error": "<error-message> (Error Id: a5844079-8cd6-4b1b-a730-a361facc3aef)" }
Vote Library Entry Up or Down ↑
This method requires authentication.
URL | Method |
---|---|
/api/library/uniqueID/vote | POST |
-
uniqueID: entry's unique ID
-
vote: vote entry up by sending value
1
, down by sending-1
, or withdraw your vote by sending0
.
none
curl -X POST -H "Content-Type: application/json" \
-d '{"vote": 0}' "https://regex101.com/api/library/GeIOpq/vote"
Click to see this sample call in other languages
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/library/GeIOpq/vote",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"vote\": 0}",
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"vote": 0
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://regex101.com/api/library/GeIOpq/vote");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "POST",
"hostname": "regex101.com",
"port": null,
"path": "/api/library/GeIOpq/vote",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ vote: 0 }));
req.end();
import requests
url = "https://regex101.com/api/library/GeIOpq/vote"
payload = "{\"vote\": 0}"
headers = {'content-type': 'application/json'}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
{ "message": "Vote registered" }
{ "error": "<error-message> (Error Id: d7216117-ce7b-47da-ab77-96a05cc726c4)" }
Publish a Library Entry ↑
This method requires authentication.
URL | Method | content-type |
---|---|---|
/api/library | POST | application/json |
This method will return a permalinkFragment
which is the entry's unique ID with which you can build both an editor view and a library view: https://regex101.com/r/UbxW2T/1 and https://regex101.com/library/UbxW2T
- regex: your regular expression
- flags: flags to be enabled for this regular expression
-
delimiter: delimiter character to be used, i.e.
"
, or@
, or/
-
flavor: desired regular expression engine, i.e.
pcre
, orpython
, orjavascript
, etc. - title: desired title for this library entry
- description: a description for this regex
- author: author's name
- testString: desired test string
- substitution: a substitution pattern for this regex
-
unitTests: JSON array containing each unit test, composed of the following variables:
- description: a description for this unit test
- testString: string to test against using entry's regular expression
- compareString: string to compare resulting match to
-
target: can either be
REGEX
for the entry regex or0
for the entry's resulting match -
criteria: match condition, depending on target; it can be
DOES_MATCH
,DOES_NOT_MATCH
,STARTS_WITH
,ENDS_WITH
,CONTAINS
,EQUALS
orIS_NULL
criteria | explanation (given regex executed on testString of unit test) |
applicable target |
---|---|---|
DOES_MATCH |
assert that the regex matches the whole input | REGEX |
DOES_NOT_MATCH |
assert that the regex doesn't match the whole input | REGEX |
STARTS_WITH |
assert that the target starts with compareString |
0 orcapture group #
|
ENDS_WITH |
assert that the target ends with compareString |
0 orcapture group #
|
CONTAINS |
assert that the target contains compareString |
0 orcapture group #
|
EQUALS |
assert that the target equals compareString |
0 orcapture group #
|
IS_NULL |
assert that the target does not participate in match | capture group #
|
curl -X POST -H "Content-Type: application/json" -d ' {
"regex":"(\\w+)(2)?",
"testString":"bird is the word",
"flags":"g",
"delimiter":"@",
"title":"My awesome title",
"description":"My even more awesome description",
"author":"JohnDoe2",
"flavor":"pcre",
"unitTests":[
{
"description":"testing ok festering not ok",
"criteria":"DOES_NOT_MATCH",
"target":"REGEX",
"testString":"festering"
},
{
"description":"word should match",
"criteria":"DOES_MATCH",
"testString":"awesomelicious",
"target":"REGEX"
},
{
"description":"match starts with",
"criteria":"STARTS_WITH",
"testString":"bird",
"target":"0",
"compareString":"bird"
},
{
"description":"match ends with",
"criteria":"ENDS_WITH",
"testString":"poop",
"target":"0",
"compareString":"poop"
},
{
"description":"there should be a word in here somewhere",
"criteria":"CONTAINS",
"testString":"word",
"target":"0",
"compareString":"word"
},
{
"description":"bird is the word, for real",
"criteria":"EQUALS",
"testString":"bird is the word",
"target":"0",
"compareString":"bird is the word"
},
{
"description":"no result",
"criteria":"IS_NULL",
"testString":"fishing",
"target":"2",
"compareString":null
}
]
}' "https://regex101.com/api/library"
Click to see this sample call in other languages
$curl = curl_init();
$fields = array (
'regex' => '(\w+)(2)?',
'testString' => 'bird is the word',
'flags' => 'g',
'delimiter' => '@',
'title' => 'My awesome title',
'description' => 'My even more awesome description',
'author' => 'JohnDoe2',
'flavor' => 'pcre',
'unitTests' =>
array (
0 =>
array (
'description' => 'testing ok festering not ok',
'criteria' => 'DOES_NOT_MATCH',
'target' => 'REGEX',
'testString' => 'festering',
),
1 =>
array (
'description' => 'word should match',
'criteria' => 'DOES_MATCH',
'testString' => 'awesomelicious',
'target' => 'REGEX',
),
2 =>
array (
'description' => 'match starts with',
'criteria' => 'STARTS_WITH',
'testString' => 'bird',
'target' => '0',
'compareString' => 'bird',
),
3 =>
array (
'description' => 'match ends with',
'criteria' => 'ENDS_WITH',
'testString' => 'poop',
'target' => '0',
'compareString' => 'poop',
),
4 =>
array (
'description' => 'there should be a word in here somewhere',
'criteria' => 'CONTAINS',
'testString' => 'word',
'target' => '0',
'compareString' => 'word',
),
5 =>
array (
'description' => 'bird is the word, for real',
'criteria' => 'EQUALS',
'testString' => 'bird is the word',
'target' => '0',
'compareString' => 'bird is the word',
),
6 =>
array (
'description' => 'no result',
'criteria' => 'IS_NULL',
'testString' => 'fishing',
'target' => '2',
'compareString' => NULL,
),
),
);
curl_setopt_array($curl, array(
CURLOPT_URL => "https://regex101.com/api/library",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode($fields),
CURLOPT_HTTPHEADER => array(
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
var data = JSON.stringify({
"regex": "(\\w+)(2)?",
"testString": "bird is the word",
"flags": "g",
"delimiter": "@",
"title": "My awesome title",
"description": "My even more awesome description",
"author": "JohnDoe2",
"flavor": "pcre",
"unitTests": [{
"description": "testing ok festering not ok",
"criteria": "DOES_NOT_MATCH",
"target": "REGEX",
"testString": "festering"
}, {
"description": "word should match",
"criteria": "DOES_MATCH",
"testString": "awesomelicious",
"target": "REGEX"
}, {
"description": "match starts with",
"criteria": "STARTS_WITH",
"testString": "bird",
"target": "0",
"compareString": "bird"
}, {
"description": "match ends with",
"criteria": "ENDS_WITH",
"testString": "poop",
"target": "0",
"compareString": "poop"
}, {
"description": "there should be a word in here somewhere",
"criteria": "CONTAINS",
"testString": "word",
"target": "0",
"compareString": "word"
}, {
"description": "bird is the word, for real",
"criteria": "EQUALS",
"testString": "bird is the word",
"target": "0",
"compareString": "bird is the word"
}, {
"description": "no result",
"criteria": "IS_NULL",
"testString": "fishing",
"target": "2",
"compareString": null
}]
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function() {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("POST", "https://regex101.com/api/library");
xhr.setRequestHeader("content-type", "application/json");
xhr.send(data);
var http = require("https");
var options = {
"method": "POST",
"hostname": "regex101.com",
"port": null,
"path": "/api/library",
"headers": {
"content-type": "application/json"
}
};
var req = http.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function () {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({ regex: '(\\w+)(2)?',
testString: 'bird is the word',
flags: 'g',
delimiter: '@',
title: 'My awesome title',
description: 'My even more awesome description',
author: 'JohnDoe2',
flavor: 'pcre',
unitTests:
[ { description: 'testing ok festering not ok',
criteria: 'DOES_NOT_MATCH',
target: 'REGEX',
testString: 'festering' },
{ description: 'word should match',
criteria: 'DOES_MATCH',
testString: 'awesomelicious',
target: 'REGEX' },
{ description: 'match starts with',
criteria: 'STARTS_WITH',
testString: 'bird',
target: '0',
compareString: 'bird' },
{ description: 'match ends with',
criteria: 'ENDS_WITH',
testString: 'poop',
target: '0',
compareString: 'poop' },
{ description: 'there should be a word in here somewhere',
criteria: 'CONTAINS',
testString: 'word',
target: '0',
compareString: 'word' },
{ description: 'bird is the word, for real',
criteria: 'EQUALS',
testString: 'bird is the word',
target: '0',
compareString: 'bird is the word' },
{ description: 'no result',
criteria: 'IS_NULL',
testString: 'fishing',
target: '2',
compareString: null } ] }));
req.end();
import requests
url = "https://regex101.com/api/library"
payload = " {\n \"regex\":\"(\\\\w+)(2)?\",\n \"testString\":\"bird is the word\",\n \"flags\":\"g\",\n \"delimiter\":\"@\",\n \"title\":\"My awesome title\",\n \"description\":\"My even more awesome description\",\n \"author\":\"JohnDoe2\",\n \"flavor\":\"pcre\",\n \"unitTests\":[\n {\n \"description\":\"testing ok festering not ok\",\n \"criteria\":\"DOES_NOT_MATCH\",\n \"target\":\"REGEX\",\n \"testString\":\"festering\"\n },\n {\n \"description\":\"word should match\",\n \"criteria\":\"DOES_MATCH\",\n \"testString\":\"awesomelicious\",\n \"target\":\"REGEX\"\n },\n {\n \"description\":\"match starts with\",\n \"criteria\":\"STARTS_WITH\",\n \"testString\":\"bird\",\n \"target\":\"0\",\n \"compareString\":\"bird\"\n },\n {\n \"description\":\"match ends with\",\n \"criteria\":\"ENDS_WITH\",\n \"testString\":\"poop\",\n \"target\":\"0\",\n \"compareString\":\"poop\"\n },\n {\n \"description\":\"there should be a word in here somewhere\",\n \"criteria\":\"CONTAINS\",\n \"testString\":\"word\",\n \"target\":\"0\",\n \"compareString\":\"word\"\n },\n {\n \"description\":\"bird is the word, for real\",\n \"criteria\":\"EQUALS\",\n \"testString\":\"bird is the word\",\n \"target\":\"0\",\n \"compareString\":\"bird is the word\"\n },\n {\n \"description\":\"no result\",\n \"criteria\":\"IS_NULL\",\n \"testString\":\"fishing\",\n \"target\":\"2\",\n \"compareString\":null\n }\n ]\n}"
headers = {'content-type': 'application/json'}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
{ "permalinkFragment": "UbxW2T" }
{ "error": "<error-message> (Error Id: a5844079-8cd6-4b1b-a730-a361facc3aef)" }