The following is a summary of the definition of the SBML identifier type UnitSId, which defines the permitted syntax of identifiers. We express the syntax using an extended form of BNF notation:

letter ::= 'a'..'z','A'..'Z'
digit ::= '0'..'9'
idChar ::= letter | digit | '_'
SId ::= ( letter | '_' ) idChar*

The characters ( and ) are used for grouping, the character * "zero or more times", and the character | indicates logical "or". The equality of SBML unit identifiers is determined by an exact character sequence match; i.e., comparisons must be performed in a case-sensitive manner. In addition, there are a few conditions for the uniqueness of unit identifiers in an SBML model. Please consult the SBML specifications for the exact formulations.