Regular Expressions 101

Community Patterns

Dice-Throwing notation

2

Regular Expression
PCRE2 (PHP >=7.3)

/
^(?<numberExpression>(?<numberDice>[0-9]+)(?<gaussExpression>[oO]?(?<gaussDices>[0-9])+(?<gaussModifier>[\+\-])?)?)?[dD](?<faces>[0-9]+)(?<exploding>[¡!]{0,2})(?<modifierExpression>[\+\-](?<modifierValue>[0-9]+))?(?<thresholdExp>:(?<thresholdValue>[0-9]+))?
/
gm

Description

  • You can express the required dice-throwing as usual: 1d10, 2d6, 3d8...
  • The first part (dice number) is mandatory. So, notations like "D10" are not computed, and they must be written as 1d10
  • The dice number may be expressed as [number]o[number]. For example: 1o3d10. That will mark to implement a Gauss system, throwing 3 dice but only giving the value of the middle one.
  • If that's the case, it is possible to add a symbol + or - at the end of the dice number value, to mark if whether you want the lowest or the highest value instead.
  • The second part of the dice (the number of sides) may be any integer
  • You can add a ! or a ¡ (or both) at the end of the notated dice to represent exploding and imploding dices
  • In addition, you can express a modifier in the form of a subtraction (-3, for example) or an addition (+2, for example)
  • You can finally add a threshold (:20, for example).
Submitted by Hermes - 2 years ago (Last modified 2 years ago)